在Keras文档中,steps_per_epoch
中的fit_generator
表示:
在声明一个纪元完成并开始下一个纪元之前,发生器产生的总步数(一批样品)。
我想知道我是否有一个无限生成器,那么进入下一个纪元时该从哪里开始呢?我会接我离开的地方吗?还是我要从第一个样本重新开始?
答案 0 :(得分:0)
这取决于生成器的定义。实际上,如果您有一个无限量生成的生成器,则必须确保已定义该生成器,以便在遍历所有样本(即一个时期)之后,它可以返回到起点(即,我们不再生成更多样本)一次)。例如,这样的生成器的草图如下:
def my_gen(x_train, y_train, batch_size):
n_samples = x_train.shape[0]
n_steps = np.ceil(n_samples // batch_size)
while True:
# one epoch: goes over all the samples
for i in range(n_steps):
# the last batch might have less than batch_size samples
if (i+1) * batch_size > n_samples:
x = x_train[i * batch_size:]
y = y_train[i * batch_size:]
else:
x = x_train[i * batch_size : (i+1) * batch_size]
y = y_train[i * batch_size : (i+1) * batch_size]
yield x, y