如何使用tf.session.run()进行测试(不更新网络参数)?

Tai*_*ian 4 testing validation session machine-learning tensorflow

通常,我使用tf.session.run()来训练我的网络,并使用eval()来获得测试的准确性或损失。但是我看到人们也使用session.run()获得测试结果,这对我来说很奇怪。我以为tf.session.run()仅用于培训,而不用于测试。

tf.session.run()下有我不知道的秘密吗?

非常感谢你!

gde*_*lab 5

tf.session.run() 是指运行一个或多个TF运算,或评估TF张量,甚至可能混合这两种类别。

当调用张量时,基本上将像评估它eval()。您可以将其与一起用于训练,sess.run(train_op, feed_dict=train_data)这将更新您的变量值,因为这就是train_op所做的。但是,如果调用sess.run(accuracy, feed_dict=data),则accuracy当输入值为由给出的张量时,它将评估张量的值data,而不管这是训练数据,验证数据还是测试数据,并且不会更改变量值,因为您只是在评估张量,不运行更改变量值的操作。

因此,tf.session.run()比您想像的要广得多,这是即使在测试时也可以进行推理或评估性能的常用方法!

您甚至可以一次执行多项操作,从而避免在同一输入上多次进行前向传递:

_, loss_value, accuracy_value = sess.run([train_op, loss_tensor, accuracy_tensor], feed_dict=data)
print('Loss value: %f' % loss_value)
Run Code Online (Sandbox Code Playgroud)