[英]TensorFlow keras model fit() parameters steps_per_epoch and epochs behavior on train set
我正在使用一个 tf.data 数据集,其中包含我的训练数据,其中包含(比如说)100k 个图像。 我也在使用包含我的验证集的 tf.data 数据集。 由于所有 100k 图像的 epoch 需要很长时间(在我的情况下大约一小时)才能获得有关验证集性能的任何反馈,因此我将 tf.keras.Model fit()
的steps_per_epoch
参数设置为10000
。 使用 1 的批量大小会导致在达到 100k 图像时有 10 个验证分数。 为了完成整个训练数据集的 10 万张图像的一个时期,我将epochs
参数设置为10
不过,我不知道,如果使用steps_per_epoch
和epochs
这样有什么其他后果。 使用这些参数以获得更频繁的性能反馈是否正确? 还有一个更具体的问题,它是使用所有 100k 图像还是在每个“时期”使用我的训练集的前 10k 图像? 我已经深入研究了TensorFlow 文档并阅读了几个不同的堆栈溢出问题,但我找不到任何结论来回答我自己的问题。 希望你能帮上忙!
我使用的 Tensorflow 版本是 2.2.0。
使用这些参数以获得更频繁的性能反馈是否正确?
是的,使用这些参数是正确的。 这是我用来拟合模型的代码。
model.fit(
train_data,
steps_per_epoch = train_samples//batch_size,
epochs = epochs,
validation_data = test_data,
verbose = 1,
validation_steps = test_samples//batch_size)
它是使用所有 100k 图像还是在每个“时期”使用我的训练集的前 10k 图像?
它使用训练数据中的所有图像。
为了更好地理解Epoch
是学习算法在整个训练数据集上工作的次数。
其中, steps_per_epoch
是训练数据集中的样本总数除以批量大小。
例如,如果您有 100000 个训练样本并使用 100 的批量大小,则一个 epoch 将相当于 1000 个 steps_per_epoch。
注意:我们通常观察批量大小为 2 的幂,这是因为优化矩阵运算库的有效工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.