这个tensorflow示例中的历元如何工作

时间:2018-07-18 03:37:58

标签: tensorflow machine-learning neural-network deep-learning

以下是用于训练简单神经网络的代码段。

for epoch in range(hm_epochs):
            epoch_loss = 0
            for _ in range(int(mnist.train.num_examples/batch_size)):
                epoch_x, epoch_y = mnist.train.next_batch(batch_size)
                _, c = sess.run([optimizer, cost], feed_dict={x: epoch_x, y: epoch_y})
                epoch_loss += c

            print('Epoch', epoch, 'completed out of',hm_epochs,'loss:',epoch_loss)

这不是完整的代码,但是据我所知,内部循环使用所有测试数据(分为批次)进行训练,并使用优化算法进行优化。如果内部循环运行一次,则算法的精度为90%,但是当运行10次(hm_epochs = 10)时,正确率是95%。这对我来说没有任何意义,如何多次使用相同的数据对其进行训练(这是在外循环运行时发生的情况),使其变得更加准确。

我是tensorflow的新手。

这不是我的代码,它来自以下系列: https://pythonprogramming.net/tensorflow-neural-network-session-machine-learning-tutorial/

2 个答案:

答案 0 :(得分:1)

所以您问为什么训练更多的时期会产生更好的结果?这应该是显而易见的:您训练的时期越多,优化器就越能根据训练集调整网络的权重。您训练模型的次数越多,它就越适合训练数据。但是,如果您过度使用它,它将无法泛化,因此在新数据上的表现会很差。这就是过度拟合。

答案 1 :(得分:1)

仅通过样本中可用的一定数量的信息来更新神经网络模型。例如,通过学习率来调整此行为。

想象一下,旋转收音机旋钮调谐电台。首先,您将其快速转动以大致获得广播电台的声音(90%),然后开始慢慢转身以微调广播电台的信号(95%)。