运行报错:

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的迁移说明:
官方升级迁移说明

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐