Python3.6调用tf.Session()报AttributeError,Python3.4正常求助
TensorFlow 1.7.0在Python3.6中调用
tf.Session()报错的原因及解决办法 首先得说,这个报错其实和Python3.4/3.6的版本差异关系不大,核心问题大概率出在TensorFlow的版本或者安装状态上,咱们一步步捋:
为什么会出现这个报错?
你看到的AttributeError: module 'tensorflow' has no attribute 'Session',最常见的场景是在TensorFlow 2.x环境里调用了TF1.x的API——因为TF2.x默认移除了tf.Session()这类旧版执行模式的API,改用即时执行(Eager Execution)或者兼容模块。
虽然你说安装的是TF1.7.0,但有可能你的Python3.6环境里实际装的是更高版本的TF2.x:比如用pip3 install tensorflow没指定版本时,pip会自动拉取最新稳定版,而TF2.x是不支持直接调用tf.Session()的。
当然也有小概率是TF1.7.0安装过程中出现了损坏,导致核心模块缺失。
怎么验证和解决?
第一步:确认当前TensorFlow版本
先在Python3.6环境里跑一行代码确认真实版本:
import tensorflow as tf print(tf.__version__)
如果版本是TF2.x:
有两种解决思路:
- 降级到TF1.7.0:用pip强制重装指定版本
pip3 uninstall tensorflow -y pip3 install tensorflow==1.7.0 --force-reinstall - 使用TF2.x的兼容模式:不用降级,直接兼容旧代码
import tensorflow.compat.v1 as tf tf.disable_v2_behavior() # 禁用TF2.x的即时执行模式 sess = tf.Session()
如果版本确实是TF1.7.0但报错:
那大概率是安装损坏了,重新安装即可:
pip3 uninstall tensorflow -y pip3 install tensorflow==1.7.0
补充说明
TF1.7.0本身是支持Python3.6的,所以Python版本不是导致报错的直接原因,不用纠结3.4和3.6的差异,重点放在TensorFlow的版本和安装状态上就好。
内容的提问来源于stack exchange,提问作者Afshin Oroojlooy
相关产品推荐
相关产品推荐

