从TensorFlow0.12升级到TensorFlow1.1

       最开始是在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

其中 InputFileOutputFile 分别为你的旧代码和新代码,根据你的文件名做相应的替换,例如我的旧代码是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

猜你喜欢

转载自blog.csdn.net/xyj1536214199/article/details/70766580
今日推荐