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

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

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

That gives us a list of booleans. To determine what fraction are
correct, we cast to floating point numbers and then take the mean. For
example, [True, False, True, True] would become [1,0,1,1] which would
become 0.75.

但是,Trying correct_prediction [0]在0x111a404d0>给我们< tensorflow.python.framework.ops.Tensor.
type(correct_prediction)给我们tensorflow.python.framework.ops.Tensor,它不是一个列表.调用dir()来查看方法,然后调用correct_prediction .__ getitem __(0)给我们< tensorflow.python.framework.ops.Tensor在0x111386f50>.

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

非常感谢!

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

换句话说,使用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)来计算给定张量(或它们的列表)的值.如果您的张量在他们的计算中包含占位符(他们通常会这样做),您还必须提供一个提要词典.这在教程中举例说明.

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

点赞