Keras序列,fit_generator和steps_per_epoch

时间:2019-06-12 12:38:42

标签: python keras

我注意到,在fit_generator中,通常为steps_per_epoch分配了total_samples//batch_size参数,在这里可以创建一个生成器/使用ImageDataGenerator并将其作为参数传递到fit_generator

但是我正在使用Sequence类(keras.utils.Sequence())创建生成器并向steps_per_epoch传递小于total_samples//batch_size的整数。

我想知道的是,一旦每个时期完成,生成器中的数据生成会从头开始吗?

例如,我的训练集中有3200个样本,并且批次大小为32。因此,理想的情况是,对于一个完整的时期,我应该将steps_per_epoch设置为100。但是,如果我将{{ 1}}到50?一旦第一个纪元完成,将生成数据点编号1601(32 * 50)还是从头开始(数据点编号1)?

1 个答案:

答案 0 :(得分:2)

使用Sequence时,您不需要传递steps_per_epoch,因为可以从您的__len__的{​​{1}}方法中推断出此信息

如果在使用Sequence.时通过steps_per_epoch,这将覆盖Sequence方法的任何使用,并且实际上将仅使用序列中的__len__个样本(从0开始到steps_per_epoch),它将在时期结束时重置为零。您可以在keras source code中检查此行为。