最近在跑深度学习代码发现,有些代码是用tf1写的,而我的机子安装的是tf2,tf1到tf2还是有比较多的变化的,具体的版本变化自行百度,不贴出来了,这篇文章主要是提供一个解决办法
怎么知道自己的报错是否是因为版本问题呢?我这里举一些报错出来吧:
module ‘tensorflow’ has no attribute ‘contrib’
module ‘tensorflow’ has no attribute ‘app’
module ‘tensorflow’ has no attribute ‘flag’
……
解决过程中也是去搜索了很多方法,(搞了一整天qaq),有很多方法在我这里行不通,但是还是列举一下,(万一是我的人品问题呢= =|)
先说一下我的环境:
python3.7 tensorflow2.3 anaconda pycharm Linux(如果你的是Windows下面的方法也可以用,本质都差不多)
那现在我要做的就是将tensorflow2.3换成1.x版本,这里我换的是1.7版本,如果想要两个环境共存的话,就在anaconda里创建一个虚拟环境,在pycharm中切换,文章最后我会说到,
这里先说一下改版本的方法,其中我使用的是第4种方法成功的,其他的办法大家自己可以试试行不行得通
01
在代码前面加上如下代码
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
(但是我这里也找不到compat= =,用了很多办法也没解决)
02
查看官方文档发现其实升级之后很多原来tf1的包在tf2集成到了其他包里,具体查看官方文档:
https://tensorflow.google.cn/versions/r1.15/api_docs/python/tf/contrib?hl=en
https://tensorflow.google.cn/guide/migrate#a_note_on_slim_contriblayers
但是因为我还要用到其他包,又不能一个一个去查看他们集成到那里去了,所以我就没有细看这种方法,感兴趣的也可以自己百度。
(关于自己去改代码,写函数,有能力的可以尝试,像我这种菜鸡就不考虑了= =)
下面就是卸载tf2重新安装tf1了:
【温馨提示】这里还是建议大家谨慎选择,不要最后没换成原来的还用不了了= =,保证自己原来的2.x版本能安装回去再去尝试卸载安装其他版本改配置等
03
不知道直接从pycharm里面下载行不行,因为我这边网速极慢,所以等了很久也没有反应= =,网速快的可以尝试一下,(不行当我没说)
File——>Settings——>
(这里是我已经换好版本之后的截图了,原来的是2.3.1)
然后就是漫长的等待时刻……
04
写在前面:如果大家搜索到那种pip install后加链接直接下载的,能成功也可以,原理上是一样的,只不过有的机子链接可能打不开。
所以我就选择了一种最简单的安装办法,下载下来whl安装^ ^
先卸载掉原来的tf2,
pip uninstall tensorflow
然后
传送门
:
点击Release history,找到你想要下载的版本,这里我选择1.7.0版本,然后点击Download files,选择和自己环境相匹配的whl文件:
因为我的python环境是3.7,所以将cp36-cp36m换成cp37-cp37m,然后到相应的下载文件夹打开终端进行安装:
pip install tensorflow-1.7.0-cp37-cp37m-manylinux1_x86_64.whl
顺利的话就直接成功了,我是下载了蛮多版本,有些安装的时候有报错,搜索之后也没解决,然后就多用了几个版本尝试= =,过程很艰辛,就不说了,如果大家在这一步安装遇到报错就自行百度或者换个版本试试吧
如何创建虚拟环境让TF1和TF2并存
这里要注意不是说让两个并存在一个环境里,只能是说在同一台机子上,想用哪个就切换一下虚拟环境就行了。
我在这里就先贴一个我觉得不错的博客上来,因为我自己还没有做,这个坑以后再填= =。
(孩子傻了,配了两天,太累了,跑个代码太不易了0v0,我得去跑代码了,不能再配环境了)