The name tf.Session is deprecated. Please use tf.compat.v1.Session instead

Hadi Rasekh picture Hadi Rasekh · Jun 29, 2019 · Viewed 30.4k times · Source

I got the following deprecation warning in my tensorflow code:

The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.

  • Why I got this warning
  • What will happen in tensorflow 2.0. instead of tf.session
  • Is it okay to use tf.compat.v1.Session

Answer

Hadi Rasekh picture Hadi Rasekh · Jun 29, 2019

To make TensorFlow be more "Pythonic" in version 2.0, by design TF 2.0 does not have tf.Session.

TensorFlow 1.X requires users to manually stitch together an abstract syntax tree (the graph) by making tf.* API calls. It then requires users to manually compile the abstract syntax tree by passing a set of output tensors and input tensors to a session.run() call.

TensorFlow 2.0 executes eagerly (like Python normally does) and in 2.0, graphs and sessions should feel like implementation details.

You could use:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

However, this does not let you take advantage of many of the improvements made in TensorFlow 2.0.

The better solution is:

  • Replace tf.Session.run calls: Every tf.Session.run call should be replaced by a Python function.
    • The feed_dict and tf.placeholders become function arguments.
    • The fetches become the function's return value.