I have been using the introductory example of matrix multiplication in TensorFlow.
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
<tensorflow.python.framework.ops.Tensor object at 0x10470fcd0>
Tensor("MatMul:0", shape=TensorShape([Dimension(1), Dimension(1)]), dtype=float32)
The easiest* way to evaluate the actual value of a
Tensor object is to pass it to the
Session.run() method, or call
Tensor.eval() when you have a default session (i.e. in a
with tf.Session(): block, or see below). In general,** you cannot print the value of a tensor without running some code in a session.
If you are experimenting with the programming model, and want an easy way to evaluate tensors, the
tf.InteractiveSession lets you open a session at the start of your program, and then use that session for all
Operation.run()) calls. This can be easier in an interactive setting, such as the shell or an IPython notebook, when it's tedious to pass around a
Session object everywhere.
This might seem silly for such a small expression, but one of the key ideas in Tensorflow is deferred execution: it's very cheap to build a large and complex expression, and when you want to evaluate it, the back-end (to which you connect with a
Session) is able to schedule its execution more efficiently (e.g. executing independent parts in parallel and using GPUs).
* To print the value of a tensor without returning it to your Python program, you can use the
tf.Print() op, as And suggests in another answer. Note that you still need to run part of the graph to see the output of this op, which is printed to standard output. If you're running distributed TensorFlow, the
tf.Print() op will print its output to the standard output of the task where that op runs.
** You might be able to use the experimental
tf.contrib.util.constant_value() function to get the value of a constant tensor, but it isn't intended for general use, and it isn't defined for many operators.