step_per_epoch和epochs的设置如何影响Keras的训练结果?

问题描述 投票:0回答:1

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

machine-learning keras epoch unsupervised-learning adam
1个回答
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及其在Cross上的答案验证,以获得更完整的批量大小定义。

© www.soinside.com 2019 - 2024. All rights reserved.