【发布时间】:2016-07-08 02:48:04
【问题描述】:
我正在使用 RNN 和 LSTM 查看 Keras 的 text generation example,但仍然对术语 epoch 和 iteration 之间的区别感到困惑。
尽管here 是之前的问题,但我无法理解answer,或者这个答案与我的理解不同,也与以下示例的处理方式不同。基于这个answer,据说
一个 epoch = 所有训练示例的一次前向传递和一次反向传递
迭代次数 = 传递次数,每次传递使用 [batch size] 示例数。
示例:如果您有 1000 个训练示例,并且批量大小为 500,则需要 2 次迭代才能完成 1 个 epoch。
结束这一点:(#training examples/batch size) = (#iterations/#epochs)。
不过,下面的example,据我了解,和之前的结论不同。
# 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()
这里,iteration 是 60 并且 epoch 的数量设置为 1,这让我很困惑很多。正如for iteration in range(1, 60) 所述,似乎有 60 个迭代。对于每个迭代,一个epoch按照model.fit(X, y, batch_size=128, nb_epoch=1) 的规定为每个for 循环完成。同样,这里有一个batch_size=128。那么迭代究竟是什么意思呢?
谁能解释一下iteration和epoch的区别根据这个例子?
【问题讨论】:
-
RNN 中的术语 Epoch 不同于多层感知器或 CNN ,这里 RNN 训练中的 epoch 涉及单串时间连续的输入输出响应对
标签: python machine-learning neural-network keras recurrent-neural-network