Tensorflow 2.0 - AttributeError: module 'tensorflow' has no attribute 'Session'

371,190

Solution 1

According to TF 1:1 Symbols Map, in TF 2.0 you should use tf.compat.v1.Session() instead of tf.Session()

https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0

To get TF 1.x like behaviour in TF 2.0 one can run

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

but then one cannot benefit of many improvements made in TF 2.0. For more details please refer to the migration guide https://www.tensorflow.org/guide/migrate

Solution 2

TF2 runs Eager Execution by default, thus removing the need for Sessions. If you want to run static graphs, the more proper way is to use tf.function() in TF2. While Session can still be accessed via tf.compat.v1.Session() in TF2, I would discourage using it. It may be helpful to demonstrate this difference by comparing the difference in hello worlds:

TF1.x hello world:

import tensorflow as tf
msg = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(msg))

TF2.x hello world:

import tensorflow as tf
msg = tf.constant('Hello, TensorFlow!')
tf.print(msg)

For more info, see Effective TensorFlow 2

Solution 3

I faced this problem when I first tried python after installing windows10 + python3.7(64bit) + anacconda3 + jupyter notebook.

I solved this problem by refering to "https://vispud.blogspot.com/2019/05/tensorflow200a0-attributeerror-module.html"

I agree with

I believe "Session()" has been removed with TF 2.0.

I inserted two lines. One is tf.compat.v1.disable_eager_execution() and the other is sess = tf.compat.v1.Session()

My Hello.py is as follows:

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

hello = tf.constant('Hello, TensorFlow!')

sess = tf.compat.v1.Session()

print(sess.run(hello))

Solution 4

For TF2.x, you can do like this.

import tensorflow as tf
with tf.compat.v1.Session() as sess:
    hello = tf.constant('hello world')
    print(sess.run(hello))

>>> b'hello world

Solution 5

Tensorflow 2.x support's Eager Execution by default hence Session is not supported.

Share:
371,190

Related videos on Youtube

Atul Kamble
Author by

Atul Kamble

Aspiring Data Scientist

Updated on August 05, 2022

Comments

  • Atul Kamble
    Atul Kamble over 1 year

    When I am executing the command sess = tf.Session() in Tensorflow 2.0 environment, I am getting an error message as below:

    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    AttributeError: module 'tensorflow' has no attribute 'Session'
    

    System Information:

    • OS Platform and Distribution: Windows 10
    • Python Version: 3.7.1
    • Tensorflow Version: 2.0.0-alpha0 (installed with pip)

    Steps to reproduce:

    Installation:

    1. pip install --upgrade pip
    2. pip install tensorflow==2.0.0-alpha0
    3. pip install keras
    4. pip install numpy==1.16.2

    Execution:

    1. Execute command: import tensorflow as tf
    2. Execute command: sess = tf.Session()
    • Dmytro Prylipko
      Dmytro Prylipko about 5 years
      Weird. I think it is not due to the TF version, but the complete TF installation is broken. See github.com/tensorflow/tensorflow/issues/…
    • jdehesa
      jdehesa about 5 years
      TensorFlow 2.0 works around functions, not sessions. I think the initial idea was to keep tf.Session at least initially, but looking at the docs it seems it has finally have been scraped completely.
    • jdehesa
      jdehesa about 5 years
      Oh it seems you can still access it through tf.compat.v1.Session.
    • Atul Kamble
      Atul Kamble about 5 years
      @DmytroPrylipko I tried it before creating this question. It did not work for me.
  • MPękalski
    MPękalski over 4 years
    I would rather say that in TF 2.0 Session() has been moved not removed. The need of using Session() has been removed.
  • Gaurav Srivastava
    Gaurav Srivastava over 4 years
    Using import tensorflow.compat.v1 as tf tf.disable_v2_behavior() gives me an error AttributeError: module 'tensorflow_core.compat.v1' has no attribute 'contrib'
  • Gaurav Srivastava
    Gaurav Srivastava over 4 years
    Found this in TF 2.0 migration documentation It is still possible to run 1.X code, unmodified (except for contrib), in TensorFlow 2.0
  • MPękalski
    MPękalski over 4 years
    After 1.15.x there should be no other 1.x version of TF, unless some patches will come, but no improvements.
  • MPękalski
    MPękalski over 4 years
    Which TF version are you using when you get the tensorflow_core has no attribute error?
  • silentsudo
    silentsudo over 4 years
    I have downloaded a few notebooks and I was facing these issues having imported statements at the top as mentioned in the answer helped me get rid of the irritating error.
  • Arty
    Arty over 3 years
    Is there non-eager mode in TF2? Or eager mode is only suggested mode of execution? What if I want to have static .pb file in TF2? Is it possible? How do I evaluate it then in TF2?
  • Arty
    Arty over 3 years
    How do I evaluate static .pb graph in TF2 then? Only through using tf1-feature like tf.compat.v1.Session(). In TF2 you're supposed to use eager mode always and no .pb?
  • Arty
    Arty over 3 years
    Does TF2 support non-eager mode at all? Or non-eager is just tf1 feature? How do I evaluate .pb graphs in tf2 then?