在MNIST的教程中,显示数据集分为三个不同的集合:(1) data_sets.train ,(2) data_sets.validation < / em>和(3) data_sets.test 。但是,在训练循环中,只有 data_sets.train 用于训练。
# Start the training loop.
for step in xrange(FLAGS.max_steps):
start_time = time.time()
# Fill a feed dictionary with the actual set of images and labels
# for this particular training step.
feed_dict = fill_feed_dict(data_sets.train,
images_placeholder,
labels_placeholder)
评估每个(step + 1) % 1000 == 0 or (step + 1) == FLAGS.max_steps
模型,以便获得三种不同的评估:(1)训练数据评估,(2)验证数据评估和(3)测试数据评估。
通常,在机器学习中,验证集用于微调模型的参数,并改善学习曲线。
如何在Tensorflow中使用验证集以使学习曲线得到改善?
答案 0 :(得分:2)
因为深度学习的训练花费的时间太长,所以使用网格搜索或随机搜索等超参数优化需要花费太长时间。
验证集主要用于在训练期间查找火车数据集上的过度拟合。然后根据验证集调整模型/超参数。据我所知,这是手动完成的。
测试集在设计算法时不会影响估计分类器在新的看不见的数据上的性能。
编辑:
有些技术使用像EarlyStopping(https://keras.io/callbacks/#earlystopping)这样的验证集,或者当x epochs(https://keras.io/callbacks/#reducelronplateau)的验证错误没有减少时降低学习率。