TensorFlow从源码安装

 

今天(2017年2月15日),TensorFlow 1.0正式发布,这意味着TF已经可以真正作为生产环境的主力Framework了!向所有开发者致敬!

本篇文章中软件的下载需要科学上网支持。主要参考资料为tensorflow的官方说明文档。

本想在一月份就把近期做的一个有关医疗图像识别的项目以博客的形式记录下来,然而一直拖到现在……计划写一个小系列吧,把配置过程,尝试过的方法分开记录于此。就从从源码安装开始吧。
由于本项目用到了重训练inception和生成Android端app,这个过程需要使用TensorFlow中的一些二进制工具软件,仅仅使用pip安装Python包是不够的,因此,需要通过源码安装TF。并且,通过源码安装可以获得
最大性能,可以开启CPU高级指令集(例如sse,avx)的支持。由于我使用的计算机配置的是AMD显卡,并且当时没有OpenCL支持,因此不涉及GPU版本,但步骤都是相似的,配合查阅官方文档很容易安装GPU版本。我使用的操作系统为Ubuntu 16.04(当时TF的版本是0.11,但是写这篇博客的时候1.0已经发布,因此我就以1.0版本为基础复现项目,在写作过程中我尽量每一步都使用1.0版本复现,防止造成困扰)

首先从github clone项目并checkout到1.0版本:

$ git clone https://github.com/tensorflow/tensorflow
$ cd tensorflow
$ git checkout r1.0

安装编译工具Bazel:

首先安装JDK8:

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

添加Bazel软件源:

$ echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
$ curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -

安装Bazel:

$ sudo apt-get update && sudo apt-get install bazel

安装依赖:

Python 2.7
$ sudo apt-get install python-numpy python-dev python-pip python-wheel

Python 3.n(推荐)
$ sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel

编译TF,在指定Python路径时选择安装了依赖的Python版本,我这里是Python3(可能需要些时间):

$ cd tensorflow  # cd to the top-level directory created
$ ./configure
Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]:
Do you wish to use jemalloc as the malloc implementation? [Y/n]
jemalloc enabled
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N]
No Google Cloud Platform support will be enabled for TensorFlow
Do you wish to build TensorFlow with Hadoop File System support? [y/N]
No Hadoop File System support will be enabled for TensorFlow
Do you wish to build TensorFlow with the XLA just-in-time compiler (experimental)? [y/N]
No XLA JIT support will be enabled for TensorFlow
Found possible Python library paths:
  /usr/local/lib/python2.7/dist-packages
  /usr/lib/python2.7/dist-packages
Please input the desired Python library path to use.  Default is [/usr/local/lib/python2.7/dist-packages]
Using python library path: /usr/local/lib/python2.7/dist-packages
Do you wish to build TensorFlow with OpenCL support? [y/N] N
No OpenCL support will be enabled for TensorFlow
Do you wish to build TensorFlow with CUDA support? [y/N] N

编译pip包:

$ bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

生成pip包:

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

如果已经从pip源安装TF,首先执行卸载:

$ sudo -H pip3 uninstall tensorflow

安装pip包

$ sudo -H pip3 install /tmp/tensorflow_pkg/*.whl

验证安装:

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

若执行过程未报错则说明安装成功。

如果您觉得作者的博客对您有用,不妨鼓励作者一下,作者将会更加努力写出高质量博客。

Leave a Reply

Your email address will not be published. Required fields are marked *