我注意到,在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)?
答案 0 :(得分:2)
使用Sequence
时,您不需要传递steps_per_epoch
,因为可以从您的__len__
的{{1}}方法中推断出此信息
如果在使用Sequence.
时通过steps_per_epoch
,这将覆盖Sequence
方法的任何使用,并且实际上将仅使用序列中的__len__
个样本(从0开始到steps_per_epoch
),它将在时期结束时重置为零。您可以在keras source code中检查此行为。