小编rsm*_*rsm的帖子

将 Keras model.fit 的 `steps_per_epoch` 与 TensorFlow 的数据集 API 的 `batch()` 相结合

我正在查看使用 Keras+TensorFlow 训练 CNN 模型期间的性能和 GPU 使用情况。类似这样的问题,我有一个很难理解的结合使用Keras的model.fitsteps_per_epoch和TensorFlow的数据集API的.batch():我设置一定的批量输入管道dataset = dataset.batch(batch_size),后来我用

fit = model.fit(dataset, epochs=num_epochs, steps_per_epoch=training_set_size//batch_size)
Run Code Online (Sandbox Code Playgroud)

但我看到实际上可以为每个 epoch 设置任意数量的步骤,甚至超过training_set_size//batch_size. 从文档中我了解到,在 Keras 上,一个 epoch 并不一定像往常一样通过整个训练集,但无论如何我有点困惑,现在我不完全确定我是否正确使用它。

dataset.batch(batch_size)+是否steps_per_epoch=training_set_size//batch_size定义了通过小批量batch_size样本在整个训练集上运行的小批量 SGD ?如果steps_per_epoch设置为 大于 ,则 epoch 是否大于一次通过训练集training_set_size//batch_size

keras tensorflow tensorflow-datasets

6
推荐指数
1
解决办法
970
查看次数

Keras 和 AutoGraph

阅读这个这个答案,我明白对于 TensorFlow-2.0 上的非动态模型,Keras 将使用 AutoGraph。但是现在编写一个回调来获取训练期间变量的历史记录,

class TrainHistory(tf.keras.callbacks.Callback):
    def on_train_begin(self, logs={}):
        self.vars = []

    def on_batch_end(self, batch, logs={}):
        self.vars.append([v.numpy() for v in self.model.variables])
Run Code Online (Sandbox Code Playgroud)

我看到.numpy()可以使用渴望张量的方法。我期待这样的错误numpy() is only available when eager execution is enabled。将 Keras 与 TensorFlow-2.0 结合使用时,是否正在执行 Eager 代码?

这里提到,对于像卷积这样的计算密集型函数,与tf.functionEager 代码相比,装饰函数的速度并没有太大提升,但从示例中显示的数字来看,我认为这种差异对于长时间训练可能意义重大。使用GradientTape装饰的自定义训练函数tf.function而不是 Keras 的fit()方法在性能方面会更好吗?

python keras tensorflow tensorflow2.0

5
推荐指数
1
解决办法
398
查看次数