Python 递归神经网络中的历元与迭代
我正在使用RNN和LSTM查看Keras的性能,但仍然对术语“历元”和“迭代”之间的差异感到困惑 尽管,前面的问题问的是同一件事,但我无法理解,或者这个答案与我理解它的方式不同,也与下面的示例处理它的方式不同。基于此,据说, 一次历元=所有训练示例的一次向前传球和一次向后传球 迭代次数=通过次数,每次通过使用[batch size]示例数 示例:如果您有1000个培训示例,并且批处理大小为500,则需要2次迭代才能完成1个历元 总结如下:Python 递归神经网络中的历元与迭代,python,machine-learning,neural-network,keras,recurrent-neural-network,Python,Machine Learning,Neural Network,Keras,Recurrent Neural Network,我正在使用RNN和LSTM查看Keras的性能,但仍然对术语“历元”和“迭代”之间的差异感到困惑 尽管,前面的问题问的是同一件事,但我无法理解,或者这个答案与我理解它的方式不同,也与下面的示例处理它的方式不同。基于此,据说, 一次历元=所有训练示例的一次向前传球和一次向后传球 迭代次数=通过次数,每次通过使用[batch size]示例数 示例:如果您有1000个培训示例,并且批处理大小为500,则需要2次迭代才能完成1个历元 总结如下:(#培训示例/批量大小)=(#迭代/#时代) 然而,据我所
(#培训示例/批量大小)=(#迭代/#时代)
然而,据我所知,以下结论与先前的结论不同
# 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次迭代,如在范围(1,60)中所述。对于每个迭代,按照所述的model.fit(X,y,batch\u size=128,nb\u epoch=1)为每个for循环进行一个历元。这里还有一个批量大小=128
。那么迭代到底意味着什么呢
根据这个例子,任何人都可以解释迭代和历元之间的区别。
?我认为在这个例子中,迭代意味着一些不同的东西:你在学习过程中迭代,在每个历元之后,你都在用部分学习的模型做一些事情。您正在以迭代的方式进行操作,这就是为什么要使用迭代单词。在本例中,迭代仅用于显示中间结果。
我们可以删除此代码:
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()
而是:
for iteration in range(1, 60):
model.fit(X, y, batch_size=128, nb_epoch=1)
写:
model.fit(X, y, batch_size=128, nb_epoch=60)
RNN中的Epoch一词不同于多层感知器或CNN,此处RNN训练中的Epoch涉及时间上连续的单串输入-输出响应对。RNN中的Epoch一词不同于多层感知器或CNN,在这里,RNN的训练涉及到时间上连续的输入-输出响应对的单个字符串