在Tensorflow中同时进行培训和测试

时间:2018-07-11 13:44:25

标签: python tensorflow neural-network training-data

我试图在Tensorflow中的同一脚本,同一图形,同一会话中进行神经网络的训练和测试。我读到有可能,但是,当我查看培训和测试操作的准确性/损失结果时,似乎这两个操作都只是某种程度上延续了培训过程。例如。 train.acc。将以0.84结束纪元,然后测试将以0.84开始,以0.87结束,然后训练将以acc重新开始。的0.87 ...

我的代码是这样构造的:

1)定义累加和损失计算

calc_loss = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits)
    acc, acc_op = tf.metrics.accuracy(labels=labels, predictions=predictions)
loss = tf.metrics.mean(calc_loss)

2)在同一个tf.session中运行上述内容,例如对于acc:

acc_value, acc_op_value = sess.run([acc, acc_op], feed_dict=feed_dict_train)
test_acc_value, test_acc_op_value = sess.run([acc, acc_op], feed_dict=feed_dict_test) 

两个词典包含不同的数据。 我的问题是,我是否需要为培训和测试定义不同的操作-培训和测试混在一起吗?还是不可能一次训练和训练?有什么干净简单的方法可以解决此问题?指向说明该问题的代码示例的链接也将有所帮助(因为我没有设法找到任何可以直接回答我的问题的东西)。

1 个答案:

答案 0 :(得分:1)

tf.metrics中的指标是有状态的;它们创建变量以累积部分结果,因此您不应期望它们会自动重置。而是使用tf.contrib.metricstf.keras.metrics中的指标并进行会话。运行操作以相应地重置它们。