问题:Tensorflow 2.0-AttributeError:模块’tensorflow’没有属性’Session’
sess = tf.Session()
在Tensorflow 2.0环境中执行命令时,出现如下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'tensorflow' has no attribute 'Session'
系统信息:
- 操作系统平台和发行版:Windows 10
- python版本:3.7.1
- Tensorflow版本:2.0.0-alpha0(随pip一起安装)
重现步骤:
安装:
- 点安装-升级点
- pip install tensorflow == 2.0.0-alpha0
- 点安装keras
- 点安装numpy == 1.16.2
执行:
- 执行命令:将tensorflow导入为tf
- 执行命令:sess = tf.Session()
回答 0
根据TF 1:1 Symbols Map
,在TF 2.0中,您应该使用tf.compat.v1.Session()
而不是tf.Session()
https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0
要获得TF 2.0中类似TF 1.x的行为,可以运行
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
但后来人们无法受益于TF 2.0所做的许多改进。有关更多详细信息,请参阅迁移指南 https://www.tensorflow.org/guide/migrate
回答 1
TF2默认情况下运行急切执行,因此无需会话。如果要运行静态图,则更正确的方法是tf.function()
在TF2中使用。虽然仍然可以通过tf.compat.v1.Session()
TF2访问Session ,但我不建议使用它。通过比较问候世界中的差异来证明这种差异可能会有所帮助:
TF1.x你好世界:
import tensorflow as tf
msg = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(msg))
TF2.x你好世界:
import tensorflow as tf
msg = tf.constant('Hello, TensorFlow!')
tf.print(msg)
有关更多信息,请参见Effective TensorFlow 2
回答 2
安装后第一次尝试python时遇到了这个问题 windows10 + python3.7(64bit) + anacconda3 + jupyter notebook.
我通过参考“ https://vispud.blogspot.com/2019/05/tensorflow200a0-attributeerror-module.html ”解决了此问题
我同意
我相信TF 2.0已删除了“ Session()”。
我插入了两行。一个是tf.compat.v1.disable_eager_execution()
,另一个是sess = tf.compat.v1.Session()
我的Hello.py如下:
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
hello = tf.constant('Hello, TensorFlow!')
sess = tf.compat.v1.Session()
print(sess.run(hello))
回答 3
对于TF2.x
,您可以这样做。
import tensorflow as tf
with tf.compat.v1.Session() as sess:
hello = tf.constant('hello world')
print(sess.run(hello))
>>> b'hello world
回答 4
尝试这个
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
hello = tf.constant('Hello, TensorFlow!')
sess = tf.compat.v1.Session()
print(sess.run(hello))
回答 5
如果这是您的代码,则正确的解决方案是将其重写为不使用Session()
,因为在TensorFlow 2中不再需要
如果这只是您正在运行的代码,则可以通过运行降级到TensorFlow 1
pip3 install --upgrade --force-reinstall tensorflow-gpu==1.15.0
(或TensorFlow 1的最新版本)
回答 6
Tensorflow 2.x支持默认执行Eager Execution,因此不支持Session。
回答 7
使用Anaconda + Spyder(Python 3.7)
[码]
import tensorflow as tf
valor1 = tf.constant(2)
valor2 = tf.constant(3)
type(valor1)
print(valor1)
soma=valor1+valor2
type(soma)
print(soma)
sess = tf.compat.v1.Session()
with sess:
print(sess.run(soma))
[安慰]
import tensorflow as tf
valor1 = tf.constant(2)
valor2 = tf.constant(3)
type(valor1)
print(valor1)
soma=valor1+valor2
type(soma)
Tensor("Const_8:0", shape=(), dtype=int32)
Out[18]: tensorflow.python.framework.ops.Tensor
print(soma)
Tensor("add_4:0", shape=(), dtype=int32)
sess = tf.compat.v1.Session()
with sess:
print(sess.run(soma))
5
回答 8
TF v2.0支持Eager模式和v1.0的Graph模式。因此,v2.0不支持tf.session()。因此,建议您重写代码以在Eager模式下工作。
回答 9
import tensorflow as tf
sess = tf.Session()
此代码将在版本2.x上显示属性错误
在版本2.x中使用版本1.x代码
尝试这个
import tensorflow.compat.v1 as tf
sess = tf.Session()