TensorFlow keras 模型 fit() 参数steps_per_epoch

我正在使用 tf.data 数据集,其中包含由(比方说)100k 图像组成的训练数据。我还使用包含我的验证集的 tf.data 数据集。由于所有 100k 图像的 epoch 需要相当长的时间(在我的例子中大约一小时)才能获得验证集性能的任何反馈,因此我将steps_per_epochtf.keras.Model 中的参数设置fit()10000。使用批量大小为 1 的结果是,当图像数量达到 100k 时,验证分数为 10。为了完成整个训练数据集的 10 万张图像的一个 epoch,我将参数设置epochs10

但是,我不确定使用steps_per_epochandepochs这种方式是否会产生任何其他后果。使用这些参数以获得更频繁的性能反馈是否正确?还有一个更具体的问题,它是使用所有 100k 图像还是在每个“时期”使用我的训练集的相同前 10k 图像?我已经深入研究了TensorFlow 文档并阅读了几个不同的堆栈溢出问题,但我找不到任何结论性的东西来回答我自己的问题。希望您能帮忙!

我使用的Tensorflow版本是2.2.0。


智慧大石
浏览 139回答 1
1回答

喵喵时光机

使用这些参数以获得更频繁的性能反馈是否正确?是的,使用这些参数是正确的。这是我用来拟合模型的代码。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学习算法在整个训练数据集上工作的次数。其中 assteps_per_epoch是训练数据集中的样本总数除以批量大小。例如,如果您有 100000 个训练样本并使用 100 的批量大小,则一个 epoch 将相当于 1000 steps_per_epoch。注意:我们通常观察批量大小为 2 的幂,这是因为优化矩阵运算库的有效工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python