rsm*_*rsm 6 keras tensorflow tensorflow-datasets
我正在查看使用 Keras+TensorFlow 训练 CNN 模型期间的性能和 GPU 使用情况。类似这样的问题,我有一个很难理解的结合使用Keras的model.fit
的steps_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
?
steps_per_epoch
是在一个时期内通过网络运行的设定批次大小的批次数。
您已设置的steps_per_epoch
是training_set_size//batch_size
一个很好的理由。这确保所有数据都在一个时期内进行训练,提供数字精确除法(如果不是,则由 // 运算符舍入)。
也就是说,如果您的批次大小为 10,训练集大小为 30,则steps_per_epoch = 3
确保使用所有数据。
并引用你的问题:
“如果steps_per_epoch 设置为超过training_set_size//batch_size,那么epochs 是否大于一次通过训练集?”
是的。一些数据会在同一个 epoch 中再次通过。
归档时间: |
|
查看次数: |
970 次 |
最近记录: |