我的生成器总是从我的数据集中随机产生两个图像,然后我使用这两个样本来计算损失。假设我设置了steps_per_epoch=40
和epochs=5
,如果我设置了steps_per_epoch=5
和epochs=40
(我在优化器中使用Adam)有什么区别?
答案 0 :(得分:0)
epochs
参数(也称为迭代)指的是整个训练数据的通过次数。 steps_per_epoch
参数是指一个时期内生成的批次数。因此,我们有steps_per_epoch = n_samples / batch_size
。
例如,如果我们有1000个训练样本并将批次大小设置为10,则我们有steps_per_epoch = 1000 / 10 = 100
。可以设置epochs
,而与批处理大小或steps_per_epoch
的值无关。
没有适用于所有方案的批处理大小的确定值。通常,非常大的批处理量会减慢训练过程(即模型收敛到解决方案需要更多时间),非常小的批处理量可能并不能很好地利用可用资源(例如GPU和CPU) 。通常的值包括32、64、128、256、512(2的幂可以帮助更快地分配GPU内存)。另外,here is an answer on SO涉及此问题,其中包括对相关书籍和论文的引用。或者查看this question及其在交叉验证中的答案,以更完整地定义批处理大小。