2.1 Linux安装TensorFlow

2.1.1基于Pip的安装

2.1.1.1Pip安装

Pip 是一个 Python 的软件包安装与管理工具,在安装 TensorFlow 过程中要涉及安装或升级的包详见列表

​https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/pip_package/setup.py​

首先安装 pip (或 Python3 的 pip3 ):

 查看系统所安装的python版本

$python –V(版本查看)

《人工智能-TensorFlow开发笔记》第2章 TensorFlow环境搭建 - A_tensorflow

 安装python对应版本的pip和依赖包

若python版本为2.7,则输入如下命令:

$ sudo apt-get install python-pip python-dev

若python版本为3.x,则输入如下命令:

$sudo apt-get install python3-pip python3-dev

 升级pip版本

在装tensorflow之前,不管是不是最新的pip版本,都要更新一下,具体命令如下:

python 2.7版本: s u d o p i p i n s t a l l − − u p g r a d e p i p p y t h o n 3. x 版 本 : sudo pip install --upgrade pip python 3.x版本: sudopipinstall−−upgradepippython3.x版本:sudo pip3 install --upgrade pip

2.1.1.2安装 TensorFlow

 CPU安装

# Ubuntu/Linux 64-bit, CPU only, Python 2.7:

$ sudo pip install --upgrade ​​https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl​

或者 s u d o p i p i n s t a l l t e n s o r f l o w 或 者 sudo pip install tensorflow 或者 sudopipinstalltensorflow或者sudo pip install --upgrade TF_PYTHON_URL

# Ubuntu/Linux 64-bit, CPU only, Python 3.4:

$ sudo pip3 install --upgrade ​​https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl​

或者 s u d o p i p 3 i n s t a l l t e n s o r f l o w 或 者 sudo pip3 install tensorflow 或者 sudopip3installtensorflow或者sudo pip3 install --upgrade TF_PYTHON_URL

其中,TF_PYTHON_URL为TensrorFlow的python包,不通的操作系统、python版本、GPU支持状况需要选择不同的包,例如OS为Linux,python版本为3.4,仅支持CPU的情况下,TF_PYTHON_URL应当替换为

​https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.1.0-cp34-cp34m-linux_x86_64.whl​

 GPU安装

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7. Requires CUDA toolkit 7.5 and CuDNN v4

# For other versions, see “Install from sources” below.

$ sudo pip install --upgrade ​​https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl​

或者$sudo pip install tensorflow-gpu

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4. Requires CUDA toolkit 7.5 and CuDNN v4

# For other versions, see “Install from sources” below.

$ sudo pip3 install --upgrade ​​https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl​

或者$sudo pip3 install tensorflow-gpu/

【注1】笔者环境Ubuntu16.04+Python3+CPU,安装过程如下所示。(安装工程比较慢,需要耐心等待…)

《人工智能-TensorFlow开发笔记》第2章 TensorFlow环境搭建 - A_linux_02

成功安装如下所示。

《人工智能-TensorFlow开发笔记》第2章 TensorFlow环境搭建 - A_TensorFlow_03

【注2】如果之前安装过 TensorFlow < 0.7.1 的版本,应该先使用 pip uninstall 卸载 TensorFlow 和 protobuf ,保证获取的是一个最新 protobuf 依赖下的安装包。

【注3】在Ubuntu16.04系统中,默认使用的还Python2.7,,关于Python版本的切换,请参考如下文章 ​

2.1.1.3 TensorFlow验证

验证tensorflow是否安装成功,启动终端,新建一个Python脚本。

$vi ​​test.py​

然后输入以下代码,并保存。

import tensorflow as tf
a=tf.constant([1.0,2.0,3.0],shape=[3],name='a')
b=tf.constant([1.0,2.0,3.0],shape=[3],name='b')
c=a+b
sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))

执行脚本。

$python ​​test.py​

如果输出以下内容则代表安装成功。

《人工智能-TensorFlow开发笔记》第2章 TensorFlow环境搭建 - A_TensorFlow_04

2.1.2基于 Docker 的安装

我们也支持通过 Docker (​​https://www.docker.com/)运行​​ TensorFlow. 该方式的优点是不用操心软件依赖问题。

首先, 安装 Docker(​​https://docs.docker.com/install/#server)。​​ 一旦 Docker 已经启动运行, 可以通过命令启动一个容器:

$ docker run -it ​​b.gcr.io/tensorflow/tensorflow​

该命令将启动一个已经安装好 TensorFlow 及相关依赖的容器.

其它镜像

默认的 Docker 镜像只包含启动和运行 TensorFlow 所需依赖库的一个最小集. 我们额外提供了 下面的容器, 该容器同样可以通过上述 docker run 命令安装:

​b.gcr.io/tensorflow/tensorflow-full:​​ 镜像中的 TensorFlow 是从源代码完整安装的, 包含了编译和运行 TensorFlow 所需的全部工具. 在该镜像上, 可以直接使用源代码进行实验, 而不需要再安装上述的任何依赖。

2.1.3基于 VirtualEnv 的安装

我们推荐使用 virtualenv 创建一个隔离的容器, 来安装 TensorFlow. 这是可选的, 但是这样做能使排查安装问题变得更容易。

首先, 安装所有必备工具:

$ sudo apt-get install python-pip python-dev python-virtualenv

接下来, 建立一个全新的 virtualenv 环境. 为了将环境建在 ~/tensorflow 目录下, 执行:

$ virtualenv --system-site-packages ~/tensorflow

$ cd ~/tensorflow

然后, 激活 virtualenv:

$ source bin/activate # 如果使用 bash

$ source bin/activate.csh # 如果使用 csh

(tensorflow)$ # 终端提示符应该发生变化

在 virtualenv 内, 安装 TensorFlow:

(tensorflow) $ pip install --upgrade <$url_to_binary.whl>

接下来, 使用类似命令运行 TensorFlow 程序:

(tensorflow)$ cd tensorflow/models/image/mnist
(tensorflow)$ python convolutional.py
# 当使用完 TensorFlow
(tensorflow)$ deactivate # 停用 virtualenv
$ # 你的命令提示符会恢复原样

2.1.4基于 Anaconda 的安装

Anaconda (​​https://www.anaconda.com/what-is-anaconda/)是一个集成许多第三方科学计算库的​​​ Python 科学计算环境(​​https://conda.io/docs/user-guide/tasks/manage-environments.html),Anaconda​​ 使用 conda 作为自己的包管理工具,同时具有自己的计算环境,类似 Virtualenv.

和 Virtualenv 一样,不同 Python 工程需要的依赖包,conda 将他们存储在不同的地方。 TensorFlow 上安装的 Anaconda 不会对之前安装的 Python 包进行覆盖。

1.安装 Anaconda :

参考 Anaconda 的下载页面的指导(​​https://www.anaconda.com/download/)​

2.建立一个 conda 计算环境

建立一个 conda 计算环境名字叫tensorflow:

# Python 2.7

$ conda create -n tensorflow python=2.7

# Python 3.4

$ conda create -n tensorflow python=3.4

3.激活环境,使用 conda 安装 TensorFlow

激活tensorflow环境,然后使用其中的 pip 安装 TensorFlow. 当使用easy_install使用–ignore-installed标记防止错误的产生。

$ source activate tensorflow
(tensorflow)$ # Your prompt should change
# Ubuntu/Linux 64-bit, CPU only, Python 2.7:
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7. Requires CUDA toolkit 7.5 and CuDNN v4.
# For other versions, see "Install from sources" below.
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl

对于 Python 3.x :

$ source activate tensorflow
(tensorflow)$ # Your prompt should change
# Ubuntu/Linux 64-bit, CPU only, Python 3.4:
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4. Requires CUDA toolkit 7.5 and CuDNN v4.
# For other versions, see "Install from sources" below.
(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl

conda 环境激活后,你可以测试。

当你不用 TensorFlow 的时候,关闭环境:

(tensorflow)$ source deactivate
$ # Your prompt should change back

再次使用的时候再激活 :

$ source activate tensorflow
(tensorflow)$ # Your prompt should change.
# Run Python programs that use TensorFlow.
...
# When you are done using TensorFlow, deactivate the environment.
(tensorflow)$ source deactivate

4.测试

 (可选) 启用 GPU 支持

如果你使用 pip 二进制包安装了开启 GPU 支持的 TensorFlow, 你必须确保 系统里安装了正确的 CUDA sdk 和 CUDNN 版本. 请参间 CUDA 安装教程。

你还需要设置 LD_LIBRARY_PATH 和 CUDA_HOME 环境变量. 可以考虑将下面的命令 添加到 ~/.bash_profile 文件中, 这样每次登陆后自动生效. 注意, 下面的命令 假定 CUDA 安装目录为 /usr/local/cuda:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"

export CUDA_HOME=/usr/local/cuda

 运行 TensorFlow

打开一个 python 终端:

$ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>>

2.1.5源码安装

1.克隆 TensorFlow 仓库

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

【注】–recurse-submodules 参数是必须得, 用于获取 TesorFlow 依赖的 protobuf 库.

2.安装 Bazel

首先依照教程(​​https://docs.bazel.build/versions/master/install.html)安装​​ Bazel 的依赖. 然后在 链接(​​https://github.com/bazelbuild/bazel/releases)中下载适合你的操作系统的最新稳定版​​, 最后按照下面脚本执行:

$ chmod +x PATH_TO_INSTALL.SH

$ ./PATH_TO_INSTALL.SH --user

注意把 PATH_TO_INSTALL.SH 替换为你下载的安装包的文件路径.

将执行路径 output/bazel 添加到 $PATH 环境变量中.

3.安装其他依赖

# For Python 2.7:

$ sudo apt-get install python-numpy swig python-dev python-wheel

# For Python 3.x

$ sudo apt-get install python3-numpy swig python3-dev python3-wheel

4.安装 CUDA (在 Linux 上开启 GPU 支持)(可选)

为了编译并运行能够使用 GPU 的 TensorFlow, 需要先安装 NVIDIA 提供的 Cuda Toolkit 7.0 和 CUDNN 6.5 V2.

TensorFlow 的 GPU 特性只支持 NVidia Compute Capability >= 3.5 的显卡. 被支持的显卡 包括但不限于:

NVidia Titan

NVidia Titan X

NVidia K20

NVidia K40

 下载并安装 Cuda Toolkit 7.0

下载地址(​​https://developer.nvidia.com/cuda-toolkit-70)​

将工具安装到诸如 /usr/local/cuda 之类的路径.

 下载并安装 CUDNN Toolkit 6.5

下载地址(​​https://developer.nvidia.com/rdp/cudnn-archive)​

解压并拷贝 CUDNN 文件到 Cuda Toolkit 7.0 安装路径下. 假设 Cuda Toolkit 7.0 安装 在 /usr/local/cuda, 执行以下命令:

tar xvzf cudnn-6.5-linux-x64-v2.tgz

sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include

sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda/lib64

 配置 TensorFlow 的 Cuda 选项

从源码树的根路径执行:

$ ./configure

Do you wish to bulid TensorFlow with GPU support? [y/n] y

GPU support will be enabled for TensorFlow

Please specify the location where CUDA 7.0 toolkit is installed. Refer to

​README.md​​ for more details. [default is: /usr/local/cuda]: /usr/local/cuda

Please specify the location where CUDNN 6.5 V2 library is installed. Refer to

​README.md​​ for more details. [default is: /usr/local/cuda]: /usr/local/cuda

Setting up Cuda include

Setting up Cuda lib64

Setting up Cuda bin

Setting up Cuda nvvm

Configuration finished

这些配置将建立到系统 Cuda 库的符号链接. 每当 Cuda 库的路径发生变更时, 必须重新执行上述 步骤, 否则无法调用 bazel 编译命令.

 编译目标程序, 开启 GPU 支持

从源码树的根路径执行:

$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer

$ bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu

# 大量的输出信息. 这个例子用 GPU 迭代计算一个 2x2 矩阵的主特征值 (major eigenvalue).

# 最后几行输出和下面的信息类似.

000009/000005 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]

000006/000001 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]

000009/000009 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]

注意, GPU 支持需通过编译选项 “–config=cuda” 开启.

已知问题

尽管可以在同一个源码树下编译开启 Cuda 支持和禁用 Cuda 支持的版本, 我们还是推荐在 在切换这两种不同的编译配置时, 使用 “bazel clean” 清理环境.

在执行 bazel 编译前必须先运行 configure, 否则编译会失败并提示错误信息. 未来, 我们可能考虑将 configure 步骤包含在编译过程中, 以简化整个过程, 前提是 bazel 能够提供新的特性支持这样。

【注】常见问题

1.GPU 相关问题

如果在尝试运行一个 TensorFlow 程序时出现以下错误:

ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory

请确认你正确安装了 GPU 支持, 参见 相关章节.

2. Linux安装问题

如果出现错误:

...
"__add__", "__radd__",
^
SyntaxError: invalid syntax

解决方案: 确认正在使用的 Python 版本为 Python 2.7.

参考地址:

​英文原文​

​中文翻译​

​官网参考文档地址​