在上一篇博客中,给出了使用神经网络解决MNIST问题的完整程序。在这个程序的开始设置了初始学习率、学习率衰减率、隐藏层节点数量、迭代轮数等7种不同的参数。
在大部分情况下,配置神经网络的这些参数都是需要通过实验来调整的。使用测试数据来选取参数可能会导致神经网络模型过度拟合测试数据,从而失去对未知数据的预判能力。需要保证测试数据在训练过程中是不可见的。
于是,为了评测神经网络模型在不同参数下的效果,一般会从训练数据中抽取一部分作为验证数据。使用验证数据就可以评判不同参数取值下的模型的表现。
为了说明验证数据在一定程度上可以作为模型效果的评判标准,我们将对比在不同迭代轮数的情况下,模型在验证数据和测试数据上的正确率。
if i % 1000 == 0:
validate_acc = sess.run(accuracy, feed_dict=validate_feed)
test_acc = sess.run(accuracy, feed_dict=test_feed)
print("After %d training steps, validation accuracy"
"using average