我正在查看使用 RNN 和 LSTM 的 Keras 的文本生成示例,但仍然对术语epoch和迭代之间的区别感到困惑。
尽管这是之前的问题,但我无法理解答案,或者这个答案与我的理解不同,也与以下示例的处理方式不同。基于这个答案,据说
一个epoch = 所有训练示例的一次前向传递和一次反向传递
迭代次数=传递次数,每次传递使用 [batch size] 示例数。
示例:如果您有 1000 个训练示例,并且批量大小为 500,则需要 2 次迭代才能完成 1 个 epoch。
总结一下:(#training examples/batch size) = (#iterations/#epochs)
。
但是,据我了解,以下示例与前面的结论不同。
# train the model, output generated text after each iteration
for iteration in range(1, 60):
print()
print('-' * 50)
print('Iteration', iteration)
model.fit(X, y, batch_size=128, nb_epoch=1)
start_index = random.randint(0, len(text) - maxlen - 1)
for diversity in [0.2, 0.5, 1.0, 1.2]:
print()
print('----- diversity:', diversity)
generated = ''
sentence = text[start_index: start_index + maxlen]
generated += sentence
print('----- Generating with seed: "' + sentence + '"')
sys.stdout.write(generated)
for i in range(400):
x = np.zeros((1, maxlen, len(chars)))
for t, char in enumerate(sentence):
x[0, t, char_indices[char]] = 1.
preds = model.predict(x, verbose=0)[0]
next_index = sample(preds, diversity)
next_char = indices_char[next_index]
generated += next_char
sentence = sentence[1:] + next_char
sys.stdout.write(next_char)
sys.stdout.flush()
print()
在这里,迭代是60并且epoch的数量设置为1,这让我很困惑。如前所述,似乎有 60次迭代for iteration in range(1, 60)
。并且对于每次迭代,按照每个 for 循环的说明完成一个epoch 。model.fit(X, y, batch_size=128, nb_epoch=1)
再次,这里有一个batch_size=128
. 那么迭代究竟是什么意思呢?
任何人都可以根据这个例子解释迭代和纪元 之间的区别吗?