在TensorFlow中,我想在每次训练周期后使用相同的数据集来评估模型。我所做的如下:
# 训练数据。
cTr,train_summary,_ = sess.run([loss,summary_op,optimizer], feed_dict={input_tensor: batch_xTr,output_tensor:batch_yTr})
# 测试数据。
batch_xTe,batch_yTe = get_batch(newsgroups_test,0,len(newsgroups_test.target)) # 也可以调整批量大小
cTe,test_summary, _ = sess.run([loss,summary_op, optimizer], feed_dict={input_tensor: batch_xTe,output_tensor:batch_yTe})
结果是模型最终能达到近乎100%的准确率。这是不合理的,原因可能是我在评估时实际上也在“训练”。
有没有什么方法可以在不实际用测试数据“训练”的情况下评估模型呢?
回答:
不要用测试数据运行优化器。试试这个
cTe = sess.run([loss], feed_dict={input_tensor: batch_xTe, output_tensor: batch_yTe})