我的生成器总是从我的数据集中随机生成两个图像,然后使用这两个样本计算损失。假设我设置steps_per_epoch=40
和epochs=5
,如果我设置steps_per_epoch=5
和epochs=40
(我使用Adam作为我的优化器)有什么区别?
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及其在Cross上的答案验证,以获得更完整的批量大小定义。