Tensorflow 2.0 - AttributeError: module 'tensorflow' has no attribute 'Session'
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.
Related videos on Youtube
Comments
-
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:
- pip install --upgrade pip
- pip install tensorflow==2.0.0-alpha0
- pip install keras
- pip install numpy==1.16.2
Execution:
- Execute command: import tensorflow as tf
- Execute command: sess = tf.Session()
-
Dmytro Prylipko about 5 yearsWeird. I think it is not due to the TF version, but the complete TF installation is broken. See github.com/tensorflow/tensorflow/issues/…
-
jdehesa about 5 yearsTensorFlow 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 about 5 yearsOh it seems you can still access it through
tf.compat.v1.Session
. -
Atul Kamble about 5 years@DmytroPrylipko I tried it before creating this question. It did not work for me.
-
MPękalski over 4 yearsI would rather say that in TF 2.0
Session()
has been moved not removed. The need of usingSession()
has been removed. -
Gaurav Srivastava over 4 yearsUsing
import tensorflow.compat.v1 as tf tf.disable_v2_behavior()
gives me an errorAttributeError: module 'tensorflow_core.compat.v1' has no attribute 'contrib'
-
Gaurav Srivastava over 4 yearsFound 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 over 4 yearsAfter
1.15.x
there should be no other1.x
version of TF, unless some patches will come, but no improvements. -
MPękalski over 4 yearsWhich TF version are you using when you get the
tensorflow_core
has no attribute error? -
silentsudo over 4 yearsI 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 over 3 yearsIs 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 over 3 yearsHow do I evaluate static
.pb
graph in TF2 then? Only through using tf1-feature liketf.compat.v1.Session()
. In TF2 you're supposed to use eager mode always and no.pb
? -
Arty over 3 yearsDoes TF2 support non-eager mode at all? Or non-eager is just tf1 feature? How do I evaluate
.pb
graphs in tf2 then?