我正在讨论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以某种方式访问它们?
非常感谢!
答案 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()
。这还需要存在默认会话。