我正在查看使用RNN和LSTM的Keras的text generation example,但仍然困惑于术语“epoch”和“iteration”的区别。
即使这里有一个之前关于同样问题的问题,我也不能理解答案,或者这个答案与我的理解不同,也与下面的示例处理方式不同。根据这个答案,它说
这里,迭代为60,时期的数量设置为1,这让我很困惑。看起来,有60个迭代,如
能否有人根据这个例子解释迭代和时期之间的区别?
即使这里有一个之前关于同样问题的问题,我也不能理解答案,或者这个答案与我的理解不同,也与下面的示例处理方式不同。根据这个答案,它说
一个 epoch = 所有训练样本的一次正向传递和反向传递
迭代次数 = 经过的次数,每次经过使用 [batch size] 个样本。
例如:如果您有1000个训练样本,并且您的批量大小为500,则需要2次迭代才能完成1个epoch。
总结一下:(#训练样例/批次大小) = (#迭代次数/#纪元数)
。
然而,根据我理解,以下示例与先前的结论不同。
# 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,时期的数量设置为1,这让我很困惑。看起来,有60个迭代,如
for iteration in range(1, 60)
所述。对于每个迭代,都会执行一个时期,如model.fit(X, y, batch_size=128, nb_epoch=1)
中每个循环。再次提醒,在这里,batch_size=128
。那么迭代到底是什么意思呢?能否有人根据这个例子解释迭代和时期之间的区别?