Python 递归神经网络中的历元与迭代

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个历元 总结如下:(#培训示例/批量大小)=(#迭代/#时代) 然而,据我所

我正在使用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的训练涉及到时间上连续的输入-输出响应对的单个字符串