繁体   English   中英

TensorFlow keras 模型 fit() 参数 steps_per_epoch 和训练集上的 epochs 行为

[英]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_epochepochs这样有什么其他后果。 使用这些参数以获得更频繁的性能反馈是否正确? 还有一个更具体的问题,它是使用所有 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM