训练神经网络时的Epoch vs Iteration

训练多层感知器时, 纪元迭代之间有什么区别? html


#1楼

一般状况下,您将测试集分红小批量供网络学习,并逐步完成培训,逐层应用渐变降低。 全部这些小步骤均可以称为迭代算法

一个纪元对应于整个网络一次经过的整个训练集。 限制这一点多是有用的,例如对抗过分拟合。 网络


#2楼

我相信迭代至关于批量SGD中的单批前向+后推。 Epoch正在经历整个数据集一次(正如其余人提到的那样)。 dom


#3楼

在神经网络术语中: ide

  • 全部训练样例的一个时期 =一个前进和一个后退
  • 批量大小 =一个前向/后向传递中的训练样本数。 批量大小越大,您须要的内存空间就越大。
  • 迭代次数 =次数,每次经过使用[批量大小]数量的示例。 要清楚,一次传球=一次前进传球+一次后传传球(咱们不计算前进传球和后传传球做为两次不一样传球)。

示例:若是您有1000个训练示例,而且批量大小为500,则须要2次迭代才能完成1个时期。 学习

仅供参考: 权衡批量大小与训练神经网络的迭代次数 测试


术语“批处理”含糊不清:有些人用它来指定整个训练集,有些人用它来指代一个前进/后退中的训练样例数(正如我在这个答案中所作的那样)。 为了不这种模糊性并明确批次对应于一个前向/后向传递中的训练样本的数量,可使用术语小批量lua


#4楼

epoch是用于训练的样本子集的迭代,例如,中性网络中的梯度降低算法。 一个很好的参考是: http//neuralnetworksanddeeplearning.com/chap1.html spa

请注意,该页面具备使用纪元的梯度降低算法的代码 code

def SGD(self, training_data, epochs, mini_batch_size, eta,
        test_data=None):
    """Train the neural network using mini-batch stochastic
    gradient descent.  The "training_data" is a list of tuples
    "(x, y)" representing the training inputs and the desired
    outputs.  The other non-optional parameters are
    self-explanatory.  If "test_data" is provided then the
    network will be evaluated against the test data after each
    epoch, and partial progress printed out.  This is useful for
    tracking progress, but slows things down substantially."""
    if test_data: n_test = len(test_data)
    n = len(training_data)
    for j in xrange(epochs):
        random.shuffle(training_data)
        mini_batches = [
            training_data[k:k+mini_batch_size]
            for k in xrange(0, n, mini_batch_size)]
        for mini_batch in mini_batches:
            self.update_mini_batch(mini_batch, eta)
        if test_data:
            print "Epoch {0}: {1} / {2}".format(
                j, self.evaluate(test_data), n_test)
        else:
            print "Epoch {0} complete".format(j)

看看代码。 对于每一个时期,咱们随机生成梯度降低算法的输入子集。 为何epoch有效也在页面中解释。 请看一下。


#5楼

时代迭代描述了不一样的东西。


时代

时期描述了算法查看整个数据集的次数。 所以,每次算法查看数据集中的全部样本时,都会完成一个时期。

迭代

迭代描述了一批数据经过算法的次数。 在神经网络的状况下,这意味着向前传递向后传递 。 所以,每次经过NN传递一批数据时,都会完成迭代


一个例子可能会让它更清晰。

假设您有10个示例(或示例)的数据集。 批量大小为2,而且您已指定但愿算法运行3个时期。

所以,在每一个时代,你有5批(10/2 = 5)。 每一个批次都经过算法,所以每一个时期有5次迭代。 因为您已指定3个时期,所以您总共须要15次迭代(5 * 3 = 15)进行训练。

相关文章
相关标签/搜索