调用函数 fit_generator() 时,需要设置
steps_per_epoch
值吗?理想情况下它应该是 number of total samples/ batch size
?
Keras 的生成器是无限的。
因此,Keras 本身无法知道生成器应生成多少批次才能完成一个 epoch。
当样本数量固定时,使用
samples//batch_size
来表示一个周期是非常有意义的。但是您可能想使用例如执行随机数据增强的生成器。由于随机过程,你永远不会有两个相同的训练时期。没有明确的限制。
因此,
fit_generator
中的这些参数允许您根据需要控制每个时期的产量,尽管在标准情况下您可能会保留最明显的选项:samples//batch_size
。
如果没有数据增强,样本数量是静态的,正如 Daniel 提到的。 那么,训练的样本数就是steps_per_epoch * batch size。
通过在 Keras 中使用ImageDataGenerator,我们为数据增强制作了额外的训练数据。因此,训练的样本数量可以自行设定。 如果想要两倍的训练数据,只需将steps_per_epoch设置为(原始样本大小*2)/batch_size即可。
这是最安全的。
steps_per_epoch = len(train_generator).
如果你有 1300 张图像,批量大小为 64,如果你设置
steps_per_epoch = 1300//64
,它将导致每个 epoch 20 个步骤,忽略一些图像。通过设置 steps_per_epoch = len(train_generator)
,您可以确保在每个 epoch 期间使用所有 1300 个图像,包括处理由于除法余数而导致最后一批可能小于指定批次大小的情况。