In tensorflow, we often use sess.run() to call operations or calculate the value of a tensor. However, there are some tips you should notice when you are using it. In this tutorial, we will use some examples to discuss these tips.
Syntax of sess.run()
run( fetches, feed_dict=None, options=None, run_metadata=None )
It will run operations and evaluate tensors in fetches.
The return value of sess.run
We must notice its return value.
- If fetches is a tensor, it will return a single value.
- If fetches is a list, it will return a list.
For example:
import tensorflow as tf import numpy as np graph = tf.Graph() with graph.as_default() as g: w1 = tf.Variable(np.array([1,2], dtype = np.float32)) w2 = tf.Variable(np.array([2,2], dtype = np.float32)) wx = tf.multiply(w1, w2) initialize = tf.global_variables_initializer() with tf.Session(graph=graph) as sess: sess.run(initialize) wx_v= sess.run([wx]) print(wx_v)
In this example, we will compute the value of tensor wx. A python list is called by sess.run(). Run this code, you will get the result:
[array([2., 4.], dtype=float32)]
From the result, we can find the return value wx_v is a python list, which contains the value of wx.
Moreover, if a tensor is called by sess.run(). What is the result?
with tf.Session(graph=graph) as sess: sess.run(initialize) wx_v= sess.run(wx) print(wx_v)
Run this code, we will get the result:
[2. 4.]
The data type of wx_v is not a python list, it is the real value of wx.