記錄一次Python下Tensorflow安裝過程,1.7帶GPU加速版本

最近因爲論文須要,急需搭建Tensorflow環境,16年末當時Tensorflow版本號尚未過1,我曾按照手冊搭建過CPU版本。目前,1.7算是比較新的版本了(也能夠從源碼編譯1.8版本的Tensorflow)。
安裝步驟:
不能急於求成,安裝任何東西前都應該先閱讀用戶手冊與FAQ,弄清軟件依賴與安裝步驟。對於Tensorflow來講,官網有時上不去,建議關注Tensorflow的GitHub(https://github.com/tensorflow/tensorflow),GitHub上只是指明瞭Python版本,對於CUDA和cuDNN並無過多的說明,可是在releases頁面,尤爲是Tensorflow1.7部分作了以下說明:html

  • Tensorflow 1.7 may be the last time we support CUDA versions below 8.0.Starting with Tensorflow 1.8 release, 8.0 will be the minimum supported version.
  • Tensorflow 1.7 may be the last time we support cuDNN versions below 6.0. Starting with Tensorflow 1.8 release, 6.0 will be the minimum supported version.

若是你們不肯意深究下去,個人建議是:python

  • 沒有GPU或者GPU算力達不到3.0的(帶GPU加速的Tensorflow版本依賴cuDNN,而cuDNN又須要3.0算力的GPU支持),果斷選擇linux,由於在linux下,Python可選擇的版本更多。
  • 有GPU,而且符合算力3.0以上的要求,建議考慮windows平臺,固然,也能夠選linux,可是驅動相關問題須要本身解決,尤爲是涉及到雙顯卡的筆記本時,比較麻煩,我在本文後面給出了一個FAQ,專門討論英偉達相關驅動問題。

平臺與驅動問題解決後,下面就是下載Tensorflow和對應的Python開發環境了,有一點,谷歌作的不錯——Tensorflow直接是一個whl格式的Python包。不少教程是讓人下載Anaconda集成開發環境,我給出的建議是:若是你只是想安裝一個Python版本,而且沒什麼很是特別的需求話,能夠不用安裝Anaconda,若是你在linux下進行開發,我卻是比較推薦Anaconda,畢竟能夠省去很多事!這裏要說一下,tensorflow的GitHub上給出的windows+GPU 1.7版本只有Python3.5與3.6可選,若是你非要用Python2,那就只能選linux了~而在另一個whl包彙集地:https://www.lfd.uci.edu/~gohlke/pythonlibs/,做者說的更加簡明扼要(注意,頁面給出的是CPU版本的):linux

TensorFlow, computation using data flow graphs for scalable machine learning.The CUDA builds require CUDA 8 and CUDNN 6.git

當Python安裝好而且下載好Tensorflow的whl包後,先不要急着安裝,因爲Python在安裝包時會自動解決依賴問題,於是,在安裝Tensorflow過程當中老是會聯網下載一些依賴包,爲了讓下載更加快一些,首先須要更換pip源,國內pip源我比較推薦清華的,直接同步的官方源,極少出問題。換源的方法很簡單:windows下,直接在user目錄中建立一個pip目錄,如:C:\Users\用戶名\pip,新建文件pip.ini,內容以下:github

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

至此,咱們轉到Tensorflow對應的whl文件目錄下,直接一句pip install xxxx.whl剩下的就讓計算機處理吧~~~~~~~
由於換了源,速度不會太差,幾分鐘就裝好了~~~~
如今不要過高興,目前,很多人安裝後不能用Tensorflow,有各類問題,如今先放出一段代碼,用來測試,代碼是網上找到的。windows

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

下面這段代碼是測試GPU版本的Tensorflow的。框架

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

輸出結果會包含GPU信息~工具

FAQ
Q:顯卡驅動,CUDA tool,cuDNN三者有何關係?安裝有無前後順序?
A:關於顯卡,英偉達不少時候說的不明不白。實際上,你下載某個驅動,驅動自身大多數時候是自帶CUDA的,是的,沒錯,可是驅動自帶的CUDA卻像是少了不少東西,也找不到CUDA專門的文件夾,比較靠譜的一種說法是:正確安裝顯卡驅動後會自帶一個精簡的CUDA調用接口,以供諸如CAD等一系列軟件調用。就我使用過程來講,Caffe框架能夠直接用這個精簡接口,而不須要單獨安裝CUDA tool。可是,若是你須要開發獨立的CUDA程序,或者必須找到CUDA工具文件目錄,那CUDA tool你是必須安裝的,並且,英偉達有一個坑爹的設定:CUDA tool自帶一個匹配驅動,這就出問題了,通常咱們拿到電腦後,都是先安裝驅動的,這樣一來,二者極可能衝突,事實上,也確實出現過這類問題,比較有名的就是GTX10顯卡安裝CUDA出錯問題,目前英偉達應該已經解決了。個人建議是,若是你必須使用CUDA tool,保險起見,卸載原有驅動,直接安裝CUDA tool,這樣一來問題就會少不少。另外,cuDNN不會直接安裝,須要單獨下載,並且cuDNN其實就是.h頭文件,.lib庫文件以及一個.dll文件,只要把這三個文件放到CUDA對應的目錄下就能夠了,環境變量須要相關設置。
Q:安裝完測試時報錯:No module named "_pywrap_tensorflow" DLL load failed.
A:這個問題有不少種說法,好比什麼CUDA與cuDNN版本不匹配,缺乏微軟MSVCP140.DLL,cuDNN安裝後是否正確設置了環境變量······
目前來看,前兩種可能性不大,由於cuDNN在下載時已經明確了CUDA版本,微軟的那個東西,上述安裝過程根本沒裝,最後一個也很容易處理···不細說了,總之按照上述安裝方法,沒有任何報錯問題~
Q:請詳細說一下cuDNN安裝過程
A:看英文:測試

Copy CuDNN files to Nvidia CUDA toolkit folder (usually is located on C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0)
copy cudnn\bin\cudnn64_5.dll to C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v8.0\bin 
copy cudnn\include\cudnn.h to C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include 
copy cudnn\lib\x64\cudnn.lib to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64

CUDA在安裝過程當中已經自動加入環境變量了,因此,cuDNN不用額外設置,直接複製文件就能夠了。
Q:如何得到Tensorflow的歷史版本?
A:能夠從pypi的官方倉庫查詢:https://pypi.org/ 查詢tensorflow-gpu,或者tensorflowui

相關文章
相關標籤/搜索