我正在使用 tf.data 数据集,其中包含由(比方说)100k 图像组成的训练数据。我还使用包含我的验证集的 tf.data 数据集。由于所有 100k 图像的 epoch 需要相当长的时间(在我的例子中大约一小时)才能获得验证集性能的任何反馈,因此我将steps_per_epochtf.keras.Model 中的参数设置fit()为10000。使用批量大小为 1 的结果是,当图像数量达到 100k 时,验证分数为 10。为了完成整个训练数据集的 10 万张图像的一个 epoch,我将参数设置epochs为10但是,我不确定使用steps_per_epochandepochs这种方式是否会产生任何其他后果。使用这些参数以获得更频繁的性能反馈是否正确?还有一个更具体的问题,它是使用所有 100k 图像还是在每个“时期”使用我的训练集的相同前 10k 图像?我已经深入研究了TensorFlow 文档并阅读了几个不同的堆栈溢出问题,但我找不到任何结论性的东西来回答我自己的问题。希望您能帮忙!我使用的Tensorflow版本是2.2.0。
1 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
使用这些参数以获得更频繁的性能反馈是否正确?
是的,使用这些参数是正确的。这是我用来拟合模型的代码。
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 的幂,这是因为优化矩阵运算库的有效工作。
添加回答
举报
0/150
提交
取消