Linux——tensorflow新旧版本问题
默认安装2.0版本,但是跑别人的Tensorflow代码时,一直出现版本错误,基本可以用tf.X替换成tf.compat.v1.X解决。但是tf.contrib这个不行。
AttributeError: module ‘tensorflow.compat.v1’ has no attribute ‘contrib’ 因为tensorflow版本问题踩得坑:contrib没找到
方法一、直接卸载,更换版本
卸载2.0版本,重新安装1.X的版本。
1. 查看现在的版本:2.9.1。
2. 卸载:
3. 重新安装
1. 直接用命令
pip install tensorflow==1.14.0 -i https://mirrors.aliyun.com/pypi/simple/
报错:
ERROR: Could not find a version that satisfies the requirement tensorflow
2 问题分析
因为Pip版本对应的Python版本下没有这个版本的tensorflow。
当前指令下的Python版本没有选择对。通过执行命令
pip -V
可以查看到该pip对应的python版本是3.8。
3 解决办法
第一种情况(有pip3.6)
查看是否有pip3.6
pip3.6 -V
如果有直接使用pip3.6安装TensorFlow
pip3.6 install tensorflow-gpu==1.14.0
第二种情况(没有pip3.6)
如果有以上步骤执行成功,此步骤跳过
(1)第一步:下载安装Pip的脚本
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
(2) 第二步:安装python3.6版本的pip
python3.6 get-pip.py
如果成功的话,直接第三步,但是这里我报错了:
(忘记截图了,大概就是不支持3.6版本的,让改用3.7版本,或者提供了一个3.6版本的链接。)
解决办法:
把第一步代码的链接改成提示给出的链接:
curl https://bootstrap.pypa.io/pip/3.6/get-pip.py -o get-pip.py
接着再重复执行后续代码。
(3) 第三步:查看是否安装成功
pip3.6 -V
成功输出
pip 21.3.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
(4) 第四步:指定pip3.6 执行安装tensorflow
pip3.6 install tensorflow-gpu==1.14.0
验证是否安装成功
python
import tensorflow as tf
tf.__version__
注:安装好的tensorflow是在python3.6底下的,如果默认环境是python3.8的,需要切换环境。
方法二、不卸载
主要是针对tf.contribute.image.X()的函数。
1. 安装
参考tfa.image.translate/transform等image下的函数:python - What is the equivalent of tf.contrib.image.bipartite_match in Tensorflow 2? - Stack Overflow
先安装 tfa-nightly
pip install tfa-nightly
注意:要根据兼容性重新安装。参考链接:GitHub - tensorflow/addons: Useful extra functionality for TensorFlow 2.x maintained by SIG-addons。我的是py38+tf2.9,所以安装 tfa-nightly。
2. 使用
在代码中,引用
import tensorflow_addons as tfa
然后把涉及到
tf.contrib.image.transform()
都改成:
tfa.image.transform()
搞定。