从TensorFlow对象中检索数据 - 来自correct_prediction的布尔值列表

时间:2015-12-04 02:15:03

标签: python machine-learning neural-network tensorflow

我正在讨论MNIST初学者教程(http://www.tensorflow.org/tutorials/mnist/beginners/index.html)并尝试从correct_prediction tensor对象中获取准确预测值的布尔列表。我发现这令人困惑。

根据教程 correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))支持给我们一个布尔列表:

  

这给了我们一个布尔列表。确定分数是多少   更正,我们转换为浮点数然后取平均数。对于   例如,[True,False,True,True]将变为[1,0,1,1]   变成0.75。

但是,尝试correct_prediction[0]会给我们<tensorflow.python.framework.ops.Tensor at 0x111a404d0>type(correct_prediction)向我们提供的tensorflow.python.framework.ops.Tensor不是列表。致电dir()查看方法,然后correct_prediction.__getitem__(0)给我们<tensorflow.python.framework.ops.Tensor at 0x111386f50>

如何访问预测的布尔值列表以及y,W和b的值?是否应该从tf.Session以某种方式访问​​它们?

非常感谢!

1 个答案:

答案 0 :(得分:2)

张量变量实际上描述了为了获得您感兴趣的值而必须执行的计算。

换句话说,用correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))定义的张量不包含布尔值列表,它包含在张量流图中计算它的指令。为了获得实际值,您需要告诉tensorflow在图中计算它。

首先,您需要一个tf.Session变量。在交互式shell中进行测试的一种简单方法是sess = tf.InteractiveSession(),然后是变量初始化:sess.run(tf.initialize_all_variables())

然后,您可以调用sess.run(tensor_variable)来计算给定张量(或它们的列表)的值。如果您的张量在他们的计算中包含占位符(他们通常会这样做),您还必须提供一个提要词典。这在教程中有所体现。

您也可以从张量调用session.run()方法,而不是.eval()。这还需要存在默认会话。