最开始是在Ubuntu14上安装的TensorFlow0.12。而目前Google发布了TensorFlow 1.1 版本发布,1.0+ 版本更快、更灵活、更稳定(production-ready)于是想升级到Tensorflow1.1 。TensorFlow 1.0+版本保证 Python API 的稳定性,即使以后添加新的特性也不用担心会破坏现有代码。具体参见Google Research Blog 。
一、TensorFlow升级
我安装的是tensorflow的Python2.7的GPU版本:
pip install --upgrade tensorflow-gpu
对于 CPU 版本:
pip install --upgrade tensorflow
如果第一步成功的话,跳过二、三步,下面是升级过程中遇到的问题。
二、protobuf的版本问题
然而在在我执行上面命令时提示Tensorflow-gpu版本需要protobuf的版本必须为3.1.0,因此需要先安装protobuf3.1.0。(2017.5.22,目前google最新版本的protobuf-3.3.0安装:https://github.com/google/protobuf,可能已经需要安装这个版本了,安装过程相同)
protobuf是google公司提出的数据存储格式,详细介绍可以参考:https://code.google.com/p/protobuf/
下载protobuf3.1.0源代码,下载地址:https://github.com/google/protobuf/archive/v3.1.0.tar.gz
将protobuf-3.1.0.tar.gz解压并进行安装。解压:tar xvzf protobuf-3.1.0.tar.gz
进入protobuf-3.1.0文件夹下执行以下命令:
(0)./autogen.sh
(1)./configure --prefix=/usr/local/protobuf
(2)make
(3)make check
(4)make install
三、autoconf未安装问题
然而,在执行第(0)步时又出现autoconf未安装的错误提示;
因此安装autoconf和automake,详见:http://jingyan.baidu.com/article/8275fc8691d01a46a03cf6a5.html
中间可能会出现与: configure.ac:30: error: possibly undefined macro: AC_PROG_LIBTOOL类似的错误,
解决方法参考:http://blog.csdn.net/yusiguyuan/article/details/31747859
上述问题解决之后继续protobuf-3.1.0的安装。
注意:
安装成功后,将它的bin和lib目录分别加入到PATH和LD_LIBRARY_PATH环境变量,以方便直接调用。
设置环境变量过程:编辑/etc/profile,在文件末尾添加:
注意:这里添加的路径不同版本protobuf可能不同,需要根据提示确认路径,否则会出现root用户和普通用户版本不同的问题。
export PATH=$PATH:/usr/local/protobuf/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib
此时最好重启一次。
查看protobuf版本的命令为:protoc --version,如果普通用户无法查看,或者与sudo protoc --version查看的版本不同,就是出现了上述路径添加错误的情况。
此时重新pip更新tensorflow就成功了
四、代码更新
有两种方法更新你的代码,一种是用脚本自动升级,另一种就是手动更改。
对于脚本自动更新的方法,下载tf_upgrade.py参照如下格式更新代码:
tf_upgrade.py
使用说明对于单个文件,使用
python tf_upgrade.py --infile InputFile --outfile OutputFile
其中 InputFile
和 OutputFile
分别为你的旧代码和新代码,根据你的文件名做相应的替换,例如我的旧代码是test.py
,将要生成的新代码是test_1.0.py
,则
python tf_upgrade.py --infile test.py --outfile test_1.0.py
同时,tf_upgrade.py
会生成一个名为 report.txt
的文件,该文件记录了对旧文件做的所有改动,同时也给出了可能需要你手动更改的建议。
和单个文件类似,使用
python tf_upgrade.py --intree InputDir --outtree OutputDir
例如,我的 programs 位于 /home/user/cool
目录,新的生成的文件我想放到/home/user/cool_1.0
里,则
python tf_upgrade.py --intree /home/user/cool --outtree /home/user/cool_1.0
五、升级TensorFlow后出现的问题汇总及解决方法
tf.concat()、tf.split()的Int32错误,解决方法:http://blog.csdn.net/dxmkkk/article/details/54910889
ValueError: Only call sigmoid_cross_entropy_with_logits
with named arguments (labels=…, logits=…,…),解决方法:http://blog.csdn.net/caicai_zju/article/details/70477929