步骤_per_epoch和纪元的设置如何影响Keras中的训练结果?

时间:2018-07-27 01:29:19

标签: machine-learning keras epoch unsupervised-learning adam

我的生成器总是从我的数据集中随机产生两个图像,然后我使用这两个样本来计算损失。假设我设置了steps_per_epoch=40epochs=5,如果我设置了steps_per_epoch=5epochs=40(我在优化器中使用Adam)有什么区别?

1 个答案:

答案 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及其在交叉验证中的答案,以更完整地定义批处理大小。