Understand TensorFlow sess.run(): A Beginner Introduction – TensorFlow Tutorial

By | May 2, 2020

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.