本文出自 掘金翻譯計劃 正在組織翻譯的 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、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。