本文出自 掘金翻译计划 正在组织翻译的 TensorFlow 官方文档。若是您有兴趣,欢迎 申请成为译者,学习完译者教程后,参与到文章和文档的翻译和及对当中。咱们也正在招募 TensorFlow 译者,欢迎积极参加。前端
这篇指南解释了如何在 Ubuntu 上安装 TensorFlow。 文中的方法可能也适用于其余的 Linux 发行版,但这里咱们仅在 Ubuntu 14.04 及更高的版本中进行了测试(且仅支持这些版本)。python
你必须在下列几种 TensorFlow 中选择其一来安装:linux
若是你正在利用本帮助中描述的方法之一来安装支持 GPU 的 TensorFlow,那么你的系统中必需要有以下的 NVIDIA 软件:android
CUDA® Toolkit 8.0.(CUDA® 工具包 8.0) 更多请见 NVIDIA 英伟达的文档. 请保证你将 Cuda 相关的路径像 NVIDIA 文档中所描述的那样附在 LD_LIBRARY_PATH
环境变量中。ios
与 CUDA Toolkit 8.0 对应的 NVIDIA 驱动。git
cuDNN v6.0。 详情见 NVIDIA 英伟达的文档. 请保证你如 NVIDIA 文档中描述的那样建立了 CUDA_HOME
环境变量github
拥有 CUDA 3.0 或更高计算能力的显卡。请见 NVIDIA 英伟达的文档 中支持的 GPU 列表.docker
NVIDIA CUDA 解析工具的接口,libcupti-dev 库。 该库提供了更高级的分析工具支持。要安装这个库,对 CUDA Toolkit 8.0 以上的版本运行以下命令:shell
$ sudo apt-get install cuda-command-line-tools
而且将其路径加在你的环境变量 LD_LIBRARY_PATH
中:后端
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
对于 CUDA Toolkit 7.5及如下版本,运行:
$ sudo apt-get install libcupti-dev
若是你的包版本较早,请更新至指定的版本。若是没法升级,你仍有可能使用 GPU 支持的 TensorFlow,但须要你进行以下步骤:
你必须决定使用哪种方法来安装 TensorFlow。有以下几种支持的方法:
咱们推荐使用 virtualenv 安装方法 Virtualenv 是一个 Python 的虚拟环境,独立于其余的 Python 部署,不会与同一台机器上的其余 Python 程序互相影响。在安装 virtualenv 的过程当中,你须要安装 TensorFlow 及其所依赖的全部包(实际上这很简单)。要开始使用 TensorFlow 工做的时候,你只须要激活("activate")虚拟环境。总而言之,virtualenv 提供了一种安全可靠的方法来安装并运行 TensorFlow。
使用原生 pip 直接在你的系统上安装 TensorFlow 而不使用任何容器系统。 对于但愿使每个用户都可以使用 TensorFlow 的多用户系统的管理员,咱们推荐使用原生 pip 直接安装。 因为原生 pip 安装不会阻止一个分离的容器安装方法,pip 可能会影响到同台机器上其余基于 Python 的程序。然而若是你了解 pip 和 你当前的 Python 环境,原生 pip 安装会更加简单,每每只须要一条命令便可。
Docker 彻底地将 TensorFlow 的安装与其余以前安装于你机器上的库隔离开。 Docker 容器中包含 TensorFlow 和其余全部的依赖包。请注意 Docker 镜像可能会比较大(几百 MB 大小)。若你已经在一个很大的应用项目中使用了 Docker, 你应该也用它安装你的 TensorFlow。
在 Anaconda 中,你可使用 conda 来建立一个虚拟环境。然而,咱们推荐你使用 pip install
命令在 Anaconda 中安装 TensorFlow, 而不是 conda install
。
注意: conda 中的包是社区而非官方支持的。也就是说,TensorFlow 的团队既不负责测试也不负责维护 conda 中的包。这可能给你的使用带来隐患,须要你自行负责。
按照以下步骤来使用 virtualenv 安装 TensorFlow:
选择下面的一条命令来安装 pip 和 virtualenv:
$ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7 $ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n
挑选其中的一条命令来建立一个 virtualenv 的虚拟环境:
$ virtualenv --system-site-packages targetDirectory # for Python 2.7 $ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
其中targetDirectory
指明了 virtualenv 树中根部位置。咱们的命令中假设了targetDirectory
是 ~/tensorflow
, 但你也能够指定任意目录。
经过如下任意一条命令激活 virtualenv 的虚拟环境:
$ source ~/tensorflow/bin/activate # bash, sh, ksh, or zsh $ source ~/tensorflow/bin/activate.csh # csh or tcsh
第一条 source 命令会将你的前缀变为
<pre>(tensorflow)$ </pre>
复制代码
确保安装了 8.1 或以上的 pip 版本:
(tensorflow)$ easy_install -U pip
运行下列其中的一条命令来在激活的 virtualenv 环境中安装 TensorFlow:
(tensorflow)$ pip install --upgrade tensorflow # for Python 2.7 (tensorflow)$ pip3 install --upgrade tensorflow # for Python 3.n (tensorflow)$ pip install --upgrade tensorflow-gpu # for Python 2.7 and GPU (tensorflow)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU
若是这一步成功了,跳过步骤 6,不然继续执行步骤 6。
(可选)若是步骤 5 失败了(一般是因为你运行了一个低于 8.1 版本的 pip),经过如下命令来在激活的 virtualenv 环境中安装 TensorFlow:
(tensorflow)$ pip install --upgrade tfBinaryURL # Python 2.7 (tensorflow)$ pip3 install --upgrade tfBinaryURL # Python 3.n
其中 tfBinaryURL
指明了 TensorFlow 的 Python 包的URL 路径。 tfBinaryURL
的值取决于操做系统,Python 版本和 GPU 支持。在这里找到时候你的系统的 tfBinaryURL
值. 例如,若是你要在 Linux,Python 3.4,仅支持 CPU 的环境中安装 TensorFlow,在激活的 virtualenv 环境中运行以下命令:
(tensorflow)$ pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0rc0-cp34-cp34m-linux_x86_64.whl
若是你碰见了安装问题,请见 常见安装问题.
在安装了 TensorFlow 以后, 须要验证你的安装.
请注意你必须在每次运行 TensorFlow 以前都要激活你的虚拟环境。若是 virtualenv 环境当前并无激活,运行如下其中一条命令:
$ source ~/tensorflow/bin/activate # bash, sh, ksh, or zsh $ source ~/tensorflow/bin/activate.csh # csh or tcsh
当 virtualenv 环境激活后,你可使用 shell 来运行相关程序。你的提示以下时,表明着那你的虚拟环境已经激活了:
(tensorflow)$
当你使用完 TensorFlow 以后,你能够经过 deactivate
命令来休眠该环境:
(tensorflow)$ deactivate
前缀提示会变回原来默认的样式(由 PS1
环境变量定义)。
要卸载 TensorFlow,只须要简单地移除你所建立的整个目录树 例如:
$ rm -r targetDirectory
You may install TensorFlow through pip, choosing between a simple installation procedure or a more complex one. 你可能会须要经过 pip 来安装 TensorFlow,在一个简单的安装过程和一个更复杂的中选择其一:
注意:setup.py 中的 REQUIRED_PACKAGES 部分 列出了 TensorFlow 安装时 pip 会安装或升级的全部的包
Python 是自动安装于 Ubuntu 中的。花一秒的时间来确认一下系统中安装的 Python 版本(命令 python -V
):
pip 或 pip3 包管理一般会安装在 Ubuntu 系统上。经过 pip -V
或 pip3 -V
命令来确认下是否有安装。咱们强烈建议安装 8.1 或更高版本的 pip 或 pip3。若是没有安装,运行以下命令来安装或更新到最新的 pip 版本:
$ sudo apt-get install python-pip python-dev # for Python 2.7 $ sudo apt-get install python3-pip python3-dev # for Python 3.n
假设以前所需的软件已经安装在了你的 Linux 主机上,那么进行以下几步:
经过其中的一条命令安装 TensorFlow:
$ pip install tensorflow # Python 2.7; CPU support (no GPU support) $ pip3 install tensorflow # Python 3.n; CPU support (no GPU support) $ pip install tensorflow-gpu # Python 2.7; GPU support $ pip3 install tensorflow-gpu # Python 3.n; GPU support
若是命令完成了安装,你如今应该 对你的安装进行验证.
(可选) 若是步骤 1 失败了,安装以下格式执行命令进行安装:
$ sudo pip install --upgrade tfBinaryURL # Python 2.7 $ sudo pip3 install --upgrade tfBinaryURL # Python 3.n
其中 tfBinaryURL
指明了 TensorFlow 的 Python 包的URL 路径。 tfBinaryURL
的值取决于操做系统,Python 版本和 GPU 支持。在这里找到时候你的系统的 tfBinaryURL
值。 例如,若是你要在 Linux,Python 3.4,仅支持 CPU 的环境中安装 TensorFlow,在激活的 virtualenv 环境中运行以下命令:
(tensorflow)$ pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0rc0-cp34-cp34m-linux_x86_64.whl
若是该步骤失败了,见这里 常见安装问题.
安装完毕 TensorFlow 以后,验证你的安装.
要卸载 TensorFlow,运行以下命令:
$ sudo pip uninstall tensorflow # for Python 2.7 $ sudo pip3 uninstall tensorflow # for Python 3.n
经过如下几步来使用 Docker 安装 TensorFlow:
docker
来如 Docker 文档中所说,这样无需 sudo 命令便可运行容器. (若是你不作这一步,你须要在每次使用 Docker 时都使用 sudo 命令。)剩下的部分解释了如何运行一个 Docker 容器。
要运行一个仅支持 CPU 的 Docker 容器(即不带 GPU 支持),运行以下格式的命令:
$ docker run -it -p hostPort:containerPort TensorFlowCPUImage
其中:
-p hostPort:containerPort 是可选的 若是你准备从 shell 命令行中运行 TensorFlow 程序,那么忽略该选项。 若是你准备在如 Jupyter notebooks 中运行 TensorFlow,把 hostPort 和 containerPort 都设置为 8888. 若是你想在容器中运行 TensorBoard,加一个 -p
,将hostPort 和 containerPort 都设置为 6006.
TensorFlowCPUImage 是必需的。 它指定了 Docker。 选择声明其中的一个值:
gcr.io 是 Google 容器注册(Google Container Registry)。注意一些 TensorFlow 的镜像也能够在 dockerhub 中找到.
例如,以下命令在 Docker 容器中运行 TensorFlow CPU 二进制镜像,能够从 shell 命令行中运行 TensorFlow:
$ docker run -it gcr.io/tensorflow/tensorflow bash
以下命令也能够在 Docker 中运行最新的 TensorFlow CPU 二进制镜像。不一样的是,在这个 Docker 镜像中,你能够在 Jupyter notebook 中运行 TensorFlow:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
Docker 将会在你第一次运行的时候下载 TensorFlow 二进制镜像。
在安装 GPU 支持的 TensorFlow 以前,确保你的系统符合 NVIDIA 软件要求. 要运行一个带有 NVIDIA GPU 支持的 Docker 容器运行以下格式的命令:
$ nvidia-docker run -it -p hostPort:containerPort TensorFlowGPUImage
其中:
containerPort
都设置为 8888
.咱们推荐安装最新
的版本。例如,下面的命令在 Docker 容器中运行了 TensorFlow GPU 二进制镜像,你能够在 shell 中运行 TensorFlow 程序:
$ nvidia-docker run -it gcr.io/tensorflow/tensorflow:latest-gpu bash
以下命令也在 Docker 容器中运行了最新的 TensorFlow GPU 二进制镜像。在这个 Docker 容器中,你能够在 Jupyter notebook 中运行程序:
$ nvidia-docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow:latest-gpu
以下的命令能够安装一个较早的 TensorFlow 版本(0.12.1):
$ nvidia-docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow:0.12.1-gpu
Docker 会在你第一次运行的时候下载 TensorFlow 二进制镜像。更多信息见 TensorFlow docker readme.
你应该验证你的安装.
按照以下步骤在 Anaconda 环境中按照 TensorFlow:
按照 Anaconda 下载网站 中的指导来下载并安装 Anaconda。
经过如下命令创建一个叫作tensorflow 的 conda 环境来运行某一版本的 Python:
$ conda create -n tensorflow pip python=2.7 # or python=3.3, etc.
使用以下命令来激活 conda 环境:
$ source activate tensorflow (tensorflow)$ # 这时你的前缀应该变成这样
运行以下格式的命令来在你的 conda 环境中安装 TensorFlow:
(tensorflow)$ pip install --ignore-installed --upgrade tfBinaryURL
其中 tfBinaryURL
是 TensorFlow Python 包的 URL. 例如,以下命令安装了仅支持 CPU 的 Python 3.4 版本下的 TensorFlow:
(tensorflow)$ pip install --ignore-installed --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0rc0-cp34-cp34m-linux_x86_64.whl
按照以下步骤验证你的 TensorFlow 安装:
若是你是使用原生 pip,virtualenv 或者 Anaconda 安装的,那么进行以下步骤:
若是你是经过 Docker 安装的,开启一个你可使用 bush 的 Docker 容器,如:
$ docker run -it gcr.io/tensorflow/tensorflow bash
在你的 shell 命令行中开启 Python:
$ python
在 Python 的交互式 shell 命令行中运行以下程序:
# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
复制代码
若是系统输出一下数据,那么表明着你已经准备好编写 TensorFlow 程序了:
Hello, TensorFlow!
若是你仍然对 TensorFlow 比较陌生,请参照 @{Getting Started with TensorFlow}.
若是系统输出了一个错误信息,见常见安装错误.
咱们依赖于 Stack Overflow 来编写 TensorFlow 的安装问题和它们的解决方案。下面的表格包含了 Stack Overflow 关于常见安装问题的回答。若是你碰见了其余的错误信息或者没有在表格中列出的安装问题,请在 Stack Overflow 上搜索。若是 Stack Overflow 中没有显示相关的错误信息,建立一个新的问题并加上 tensorflow
标签。
Stack Overflow 连接 | 错误信息 Error Message |
---|---|
36159194 | ImportError: libcudart.so.Version: cannot open shared object file: No such file or directory |
41991101 | ImportError: libcudnn.Version: cannot open shared object file: No such file or directory |
36371137 and here | libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207] A protocol message was rejected because it was too big (more than 67108864 bytes). To increase the limit (or to disable these warnings), see CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h. |
35252888 | Error importing tensorflow. Unless you are using bazel, you should not try to import tensorflow from its source directory; please exit the tensorflow source tree, and relaunch your python interpreter from there. |
33623453 | IOError: [Errno 2] No such file or directory: '/tmp/pip-o6Tpui-build/setup.py' |
42006320 | ImportError: Traceback (most recent call last): File ".../tensorflow/core/framework/graph_pb2.py", line 6, in from google.protobuf import descriptor as _descriptor ImportError: cannot import name 'descriptor' |
35190574 | SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed |
42009190 | Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow Found existing installation: setuptools 1.1.6 Uninstalling setuptools-1.1.6: Exception: ... [Errno 1] Operation not permitted: '/tmp/pip-a1DXRT-uninstall/.../lib/python/_markerlib' |
36933958 | ... Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow Found existing installation: setuptools 1.1.6 Uninstalling setuptools-1.1.6: Exception: ... [Errno 1] Operation not permitted: '/tmp/pip-a1DXRT-uninstall/System/Library/Frameworks/Python.framework/ Versions/2.7/Extras/lib/python/_markerlib' |
一些安装方法中须要 TensorFlow Python 包的 URL,你所声明的值取决下面三个因素:
这个部分记录了 Linux 相关安装的 URL 值
仅支持 CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0rc0-cp27-none-linux_x86_64.whl
支持 GPU:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.4.0rc0-cp27-none-linux_x86_64.whl
注意 GPU 支持须要符合NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求的软硬件要求。
仅支持 CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0rc0-cp34-cp34m-linux_x86_64.whl
支持 GPU:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.4.0rc0-cp34-cp34m-linux_x86_64.whl
注意 GPU 支持须要符合NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求的软硬件要求。
支持 CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0rc0-cp35-cp35m-linux_x86_64.whl
GPU 支持:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.4.0rc0-cp35-cp35m-linux_x86_64.whl
注意 GPU 支持须要符合NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求的软硬件要求。
仅支持 CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0rc0-cp36-cp36m-linux_x86_64.whl
GPU 支持:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.4.0rc0-cp36-cp36m-linux_x86_64.whl
注意 GPU 支持须要符合NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求的软硬件要求。
除非你遇到了与 protobuf pip package 相关的问题,不然你能够直接跳过该部分。
**注意:**若是你的 TensorFlow 程序运行速度很慢,你可能有一个和 protobuf pip package 相关的问题。
TensorFlow pip 包依赖于 3.1 版本的 protobuf pip package。从 PyPI 下载的 protobuf pip package (使用 pip install protobuf 命令) 是一个含有序列化、反序列化实现的纯 Python 库,可能比 C++ 的实现慢 10 到 50 倍。Protobuf 同时也支持针对 Python 包的一个二进制扩展,基于快速的 C++ 解析。这个扩展在纯 Python 的标准 pip 包中是没有的。咱们已经建立了一个自定义的二进制 pip 包给含有二进制扩展的 protobuf。要安装自定义的二进制 protobuf pip package, 执行以下的命令
$ pip install --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/protobuf-3.1.0-cp27-none-linux_x86_64.whl
$ pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/protobuf-3.1.0-cp35-none-linux_x86_64.whl
安装这个 protobuf 包会覆盖掉存在的 protobuf 包。 注意二进制 pip 包已经支持大于 64 MB 的 protobuf了,所以能够解决以下的错误:
[libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207] 一个 Protocol 信息因为过大而被拒绝(大于 67108864 字节). 若想增长限制(或者关掉警告),见 CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。