运行报错:
import tensorflow.contrib.layers as layers
ModuleNotFoundError: No module named 'tensorflow.contrib'
原因及解决方法:
TensorFlow 2.0中contrib被弃用,尝试安装旧版tensorflow:
pip install tensorflow==1.14.0 # CPU版本,GPU略
不降级方法
时过境迁,TF1.0实在是陈旧,且一些计算机实验环境下,如果有显卡CUDA加速等,不适合对TF进行降级处理,因此这里给出一些在TF2.0版本下使用TF1.0一些包的方法。
(评论区@Rex~也提供了一些
不降级的处理方法
)
通过Python执行具体的代码,依次达到TF2.0下的对TF1.0适配,当出现
No module named 'tensorflow.xxx'
类似错误时,先检查代码文件开头
import
语句,如果是
import tensorflow as tf
,则修改为:
import tensorflow.compat.v1 as tf
tf.compat.v1.disable_eager_execution()
然后继续通过代码执行检查错误,大部分的包都会被解决,一部分包被改名了,但也有一小部分包、库在TF2.0中被移除,只能求助于其他包,部分如下:
tensorflow.contrib.layers.fully_connected
该包在2.0中被删除,通过安装tf_slim包解决,如下:
pip install tf-slim
安装后,在代码中导入该包即可:
import tf_slim
可能原处使用的代码为:
import tensorflow.contrib.layers as tf_layers
tf_layers.fully_connected(xxxx)
可以替换为:
import tf_slim as tf_layers
tf.random_normal
tf.random_normal
报错,替换为
tf.random.normal
即可。
注:将下划线
_
变成了
.
其他包有待发现,可以参考Tensorflow2.0的迁移说明:
官方升级迁移说明