Tensorflow1.8 源码编译

环境ubuntu16.04

已经安装tensorflow1.5

由于项目的需要,升级到1.8

1.下载Bazel

bazel是一个编译器,下载地址:https://github.com/bazelbuild/bazel/releases/

其中dist.zip结尾的是源码,.deblinux-x86_64.sh结尾的是可执行安装程序,这里我采用源码安装

安装tensorflow1.5 需要bazel-0.5.4及以上版本,但不能太高,否则编译报错。安装tensorflow1.8需要bazel-0.10.0及以上版本,我这里下载的是bazel-0.10.1-dist.zip

2.安装 Bazel 的依赖.

sudo apt-get install pkg-config zip g++ zlib1g-dev unzip

3.安装openjdk8

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

4.配置openjdk 8为默认java环境

sudo update-alternatives --config java
sudo update-alternatives --config javac

5.编译bazel

./compile.sh

编完之后会在该目录下生成output/bazel,可以将bazel放到PATH所在的目录:cp output/bazel /usr/local/bin,也可以把此目录加入PATH

6.下载tensorflow源码

git clone --recurse-submodules https://github.com/tensorflow/tensorflow

由于我需要安装1.8版本,下载完之后需要执行:git checkout remotes/origin/r1.8 进行版本切换 

7.配置

./configure

出来的选项基本选择默认就可以了。其有重要的一点是

Do you wish to build TensorFlow with CUDA support? [y/N] y
CUDA support will be enabled for TensorFlow

这个是选择编译cpu版本还是gpu版本,如果你有运算能力在3.5以上的显卡,可以选择y来生成gpu版本,否则就选N生成cpu版本

8.编译

bazel build -c opt --copt=-msse4.1 --copt=-msse4.2 --copt=-mavx //tensorflow/tools/pip_package:build_pip_package

我的cpu支持msse4.2和mavx指令集,但是tensorflow默认没有,所以要单独加上。至于如果看需要添加哪些指令集,可以先下载或编译一个默认的版本,然后运行一个程序,终端会打印出相应的警告,其中会列出本机cpu支持但tensorflow没有编进去的指令集。将其添加到此处即可

由于我的电脑显示性能太低,所以没有编gpu版本。如果要编gpu版本,需要加上--config=cuda

9.生成安装包

bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/tmp/tensorflow_pkg

会在~/tmp/tensorflow_pkg目录下生成可以安装的whl文件,如:tensorflow-1.8.0-cp36-cp36m-linux_x86_64.whl

10.缷载之前的版本

pip uninstall tensorflow 

11.安装新版本

pip install ~/tmp/tensorflow_pkg/tensorflow-1.8.0-cp36-cp36m-linux_x86_64.whl

12.验证安装是否成功

打开任意一个新的终端,注意不要在tensorflow的安装路径下,运行

python

输入以下代码

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

如果输出为:

Hello, TensorFlow!

说明安装成功

13.踩到的坑

1.bazel的版本选择,可以在下载完tensorflow源码并切换到对应的版本后先运行./configure,看提示需要什么版本的bazel,然后去下载最接近的版本。如果选择最高的bazel版本可能会编译不成功

2.bazel如果采用源码编译,解压出来的文件可能没有执行权限,需要运行以下命令给所有文件加上执行权限,否则编译会报Permission denied错误

$chmod -R +x bazel-0.10.1-dist/*

参考文档:

https://blog.csdn.net/u013832707/article/details/73161071

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值