1. 程式人生 > >【TensorFlow】Windows10 64位下安裝TensorFlow

【TensorFlow】Windows10 64位下安裝TensorFlow

之前 寫過一篇在 ubuntu 下安裝 TensorFlow 的教程,那個時候 TensorFlow 官方還不支援 Windows 系統,雖然可以通過其他方法安裝,但是終究不是原生的,而且安裝過程繁瑣易錯。好訊息是,Google官方在11月29號的開發者部落格中宣佈新的版本(0.12)將增加對Windows的支援,我11月30號知道的,立馬就安裝試了試,安裝過程非常簡單,不過也有一些需要手動調整。

這裡寫圖片描述

更新

這裡我會列出對本文的更新。

  • 2017 年 3 月 1 日:cuDNN 版本從 5.0 升級到 5.1 版本,更新 cuda 和 cudnn 下載地址。
  • 2017 年 3 月 20 日:標記 安裝前準備 中的第五條 確保你安裝了 VS2015 或者 2013 或者 2010。
    為存疑。這是我之前在 TensorFlow 官網看到的,但是現在去翻了翻找不到了。如果有同學沒有安裝 VS 就把 TensorFlow 安裝成功了的話,請在下方評論區說明下,到時候我會將這個要求標記為刪除。謝謝。
  • 2017 年 3 月 26 日:更新 TensorFlow 安裝命令。
  • 2017 年 4 月 18 日:
    • 安裝前準備 第五條標記為刪除,經過我再次試驗發現不需要 VS 的支援。
    • 增加問題 Cannot remove entries from nonexistent file 的解決辦法。
  • 2017 年 7 月 20 日:增加問題 ImportError: DLL load failed: 找不到指定的模組。
    ImportError: No module named '_pywrap_tensorflow_internal'ImportError: No module named 'tensorflow.python.pywrap_tensorflow_internal 的時候` 的解決辦法。
  • 2017 年 7 月 31日:更新關於 Python 版本的說明,TensorFlow 從 1.2 開始在 Windows 上支援 Python 3.6。感謝評論區 @Vince_Ace 提供的資訊。
  • 2017 年 8 月 20 日:TensorFlow 1.3 釋出,更新 cuDNN 版本說明。感謝評論區 @myseth1023 提供的資訊。
  • 2017 年 8 月 21 日:刪除 安裝cuDNN 中容易誤導人的部分(關於新增環境變數)。

安裝前準備

TensorFlow 有兩個版本:CPU 版本和 GPU 版本。GPU 版本需要 CUDAcuDNN 的支援,CPU 版本不需要。如果你要安裝 GPU 版本,請先確認你的顯示卡支援 CUDA。我安裝的是 GPU 版本,採用pip 安裝方式,所以就以 GPU 安裝為例,CPU 版本只不過不需要安裝 CUDA 和 cuDNN。

  1. 這裡 確認你的顯示卡支援 CUDA。
  2. 確保你的 Python 版本是 3.5 64 位及以上。(TensorFlow 從 1.2 開始支援 Python 3.6,之前的官方是不支援的)
  3. 確保你有穩定的網路連線。
  4. 確保你的 pip 版本 >= 8.1。用 pip -V 檢視當前 pip 版本,用 python -m pip install -U pip 升級pip
  5. 確保你安裝了 VS2015 或者 2013 或者 2010。此條非必須,刪除。

此外,建議安裝 Anaconda,因為這個集成了很多科學計算所必需的庫,能夠避免很多依賴問題,安裝教程可以參考 這裡

以上條件符合,那麼恭喜你可以開始下載 CUDA 和 cuDNN 的安裝包了,注意版本號分別是 CUDA 8.0 cuDNN 5.1(由於 TensorFlow 不同版本有變化,5.1 已不再適用新版本,此處請結合 安裝cuDNN 說明),這是 Google 官方推薦的。可以去各自官網下載,我已經下載好打成一個壓縮包放到了百度雲,大家可以從 這裡 下載,密碼 5aoc。

安裝TensorFlow

由於Google那幫人已經把 TensorFlow 打成了一個 pip 安裝包,所以現在可以用正常安裝包的方式安裝 TensorFlow 了,就是進入命令列執行下面這一條簡單的語句:

# GPU版本
pip3 install --upgrade tensorflow-gpu

# CPU版本
pip3 install --upgrade tensorflow

然後就開始安裝了,速度視網速而定。

安裝網之後你試著在 Python 中import tensorflow 會告訴你沒有找到 CUDA 和 cuDNN,所以下一步就是安裝這兩個東西。

安裝CUDA 8.0

這個也是很簡單的,下載完我上面給的壓縮包之後,解壓,得到兩個檔案,那個 exe 檔案就是 CUDA8 的安裝程式,直接雙擊執行就可以了,就像安裝正常的其他軟體一樣,安裝過程螢幕可能會閃爍,不要緊,而且安裝時間有點長。

安裝完之後系統變數會自動為你新增上,這個不用管。

測試一下是否安裝成功,命令列輸入 nvcc -V ,看到版本資訊就表示安裝成功了。

這裡寫圖片描述

安裝cuDNN

Google 於 2017 年 8 月 17 日左右釋出了 TensorFlow 1.3,該版本不再支援 cuDNN 5,開始支援 cuDNN 6,並預計在 TensorFlow 1.4 支援 cuDNN 7,所以說當你使用 pip 安裝最新版的時候,請使用 cuDNN 6,而不是我提供的 5.1,否則會出現Issues #2 的問題。

TensorFlow 1.3 中關於 cuDNN 的 發行說明

All our prebuilt binaries have been built with cuDNN 6. We anticipate releasing TensorFlow 1.4 with cuDNN 7.

TensorFlow 1.2 中關於 cuDNN 的 發行說明

TensorFlow 1.2 may be the last time we build with cuDNN 5.1. Starting with TensorFlow 1.3, we will try to build all our prebuilt binaries with cuDNN 6.0. While we will try to keep our source code compatible with cuDNN 5.1, it will be best effort.

其實這個是一個壓縮包,解壓放到任何一個目錄下就行,然後把你放的那個目錄新增到Path 環境變數裡。

比如說我的是:

這裡寫圖片描述

Path環境變數:

path

如果你已經安裝了 cuDNN 5.0 ,那麼升級 cuDNN 的方法可以參考 這裡

然後 import tensorflow 應該就成功了。

測試

用一個簡單的矩陣乘法測試一下,

import tensorflow as tf

a = tf.random_normal((100, 100))
b = tf.random_normal((100, 500))
c = tf.matmul(a, b)
sess = tf.InteractiveSession()
sess.run(c)

這裡寫圖片描述
看不清的話可以右鍵在新標籤頁開啟圖片檢視大圖

可以看到已經識別出我的顯示卡了(不要吐槽我的渣顯示卡,窮屌絲一個)。

終於可以在Windows上和TensorFlow愉快的玩耍了~~~

Issues

#1 Cannot remove entries from nonexistent file

如果在安裝 TensorFlow 的時候出現類似 Cannot remove entries from nonexistent file c:\users\li\anaconda3\lib\site-packages\easy-install.pth 的錯誤,那麼可以參考Cannot remove entries from nonexistent #622 osx 10.11 installation issues #135,裡面說了好多種解決辦法,我在這裡介紹一種方法:在 pip3 install --upgrade tensorflow-gpu 之前先執行pip install --upgrade --ignore-installed setuptools

#2 ImportError: DLL load failed: 找不到指定的模組。ImportError: No module named '_pywrap_tensorflow_internal'

這裡寫圖片描述
右鍵在新標籤頁開啟圖片檢視大圖

這裡寫圖片描述
右鍵在新標籤頁開啟圖片檢視大圖

這裡寫圖片描述
右鍵在新標籤頁開啟圖片檢視大圖

如果在 import tensorflow 的時候這兩個問題同時出現,那麼很有可能是你的 cuda 和 cudnn 版本有問題,例如你的 cuda 版本是8.0.60,而正確的是8.0.44,重新安裝正確的版本(文章裡提供的)就可以。參考On Windows, running “import tensorflow” generates No module named “_pywrap_tensorflow” error 。感謝 @qq_27690673 提供的資訊。

#3ImportError: No module named 'tensorflow.python.pywrap_tensorflow_internal'

這裡寫圖片描述
右鍵在新標籤頁開啟圖片檢視大圖

如果在 import tensorflow 的時候出現此問題,那麼你可能是在 tensorflow 的原始碼目錄裡進入了 python 直譯器。離開該目錄重新進入 python 直譯器即可。