ATP曾經,曾經,曾經,擁有過一臺裝好了tensorflow-gpu的電腦。當初的ATP使用的仍是tensorflow1.7.1,還在煞筆兮兮地用tf.matmul手寫卷積神經網絡。python
後來,ATP運行某代碼時出了問題,告訴ATP它用的tensorflow版本過低了。那麼ATP顯然須要升級一下。git
聽說升級tensorflow須要同時升級cuda和cudnn,那麼ATP就把舊的卸了。github
而後,它裝不上新的了。windows
在ATP用CPU訓練了若干模型後,ATP在一個不想學習的下午又打開了安裝教程。在安裝了一個下午之後ATP陷入了自閉,而後它讓npy陪它去食堂吃了兩串烤麪筋和四串烤魷魚,而後晚上回來又裝,而後裝上了,彷佛是成功的裝上了。網絡
爲了防止其餘有相似境遇的程序猿陷入像ATP同樣不得不在晚上攝入額外熱量的境地,ATP決定把它的坑羅列出來供你們參考。學習
畢竟這類踩坑博文雖然網上有不少,但老是少正好適合本身的那一篇,就像ATP的零食箱子里老是少一件零食同樣。spa
如下內容假設你已經安裝了Anaconda而且明白它的基本使用。不然能夠去百度一下,這一部分實際上都大同小異。code
若是你的電腦純潔得像一張白紙那麼資瓷忽略這一部分。blog
實際上主要是要卸掉舊的cuda。像這樣打開開始菜單裏的設置:排序
找到「應用」,點進去,而後在列表上方的下拉菜單裏選擇按安裝日期排序,像這樣:
而後能夠發現裏面有一堆帶着cuda這四個字母的東西,把它們全卸了。換句話說,假設你的舊版本是9.2,那麼就把名字裏帶着9.2的全卸了。
別的東西不必動,也最好別動。有些人可能爲了圖省事把安裝日期是當天的東西全給卸了,但cuda的安裝程序可能會對之前就有的一些驅動進行更改。ATP有一次失敗的時候就一口氣把全部全卸了,包括一個叫GeForce的東西,而後它打遊戲的時候發現它的遊戲幀數從70幀每秒掉到了15幀每秒,嚇得ATP趕忙從新安裝了顯卡驅動,結果塞翁失馬把遊戲幀數提到了90幀每秒。
首先要肯定你能夠安裝哪一個版本的cuda。查詢方法是打開控制面板(運行+control),打開「硬件和聲音」,找到一個叫「NVIDIA控制面板」的東西。
若是你的這個東西點不開,那可能須要從新裝一遍顯卡驅動。ATP的就是重裝了GeForce之後才能點開的。
打開之後是下圖這樣:
而後打開幫助->系統信息,在對話框裏的小標籤裏點「組件」。有一個叫「NVCUDA.DLL」的東西,後面跟着一串版本號,大概意思就是你的顯卡能支持哪一個版本的cuda。親測版本低了能夠,高了不行。以下圖:
而後能夠查一下你想安裝的cuda版本對應哪一個版本的tensorflow和cudnn。這個能夠很方便地百度到。
反正總之注意必定要按照對應關係安裝!要否則會亂七八糟的。
ATP打算裝的是tensorflow1.13,對應cuda10.1和cudnn7.5。
從這個地方下載cuda:https://developer.nvidia.com/cuda-downloads
按照你本身的系統一步步選,最後選exe(local)便可。下載完了雙擊exe,選擇「精簡」安裝就能夠了,不須要自定義什麼東西。
從這個地方下載cudnn:https://developer.nvidia.com/rdp/cudnn-download
它須要登陸,但不須要特別去註冊一個帳號,用QQ均可以登陸。
按照你的cuda版本下載對應的cudnn。必定要下載對應的!否則系統亂了都不知道咋亂的。。
它第一頁只有最新版本cudnn,若是要下載舊一點的版本能夠點下面的Archived Cudnn Releases,ATP下載的是7.5.0 for cuda10.1。
下載下來之後是個壓縮包。解壓開裏面有bin、lib和include三個文件夾和一個文本文件。
接下來是重點!ATP在這個地方卡了很久。
打開目錄C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1,它應該長這樣:
把剛纔那三個文件夾和一個文本文件直接複製到這個地方。實際上就是讓cudnn的bin文件夾裏的東西在這個cuda的bin文件夾裏,lib文件夾裏的東西在cuda的lib文件夾裏,這樣。
實際上,若是你打開cudnn的bin文件夾, 能夠發現只有一個文件叫作cudnn64_7.dll。剛纔作的事情等價於把這個文件複製粘貼到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin目錄下。
有時候安裝錯誤,tensorflow會報錯,意思是缺乏「cudnn64_7.dll」這個文件,問題就在於可能你沒有讓這個dll文件呆在cuda目錄的bin文件夾裏面。
這個也弄完了之後就okk了!就能夠用Anaconda新建一個環境,而後pip安裝tensorflow-gpu了。
注意在新建環境的時候要確保python是3.7,pip是19.1。而後pip install tensorflow-gpu,它就會自動裝上最新的1.13版本了。
若是安裝完了之後仍是有奇怪的問題,也能夠試試這個安裝源: https://github.com/fo40225/tensorflow-windows-wheel
若是import tensorflow的時候報一個叫作「ImportError」的錯,頗有多是cuda的版本跟顯卡目前的支持不對應。
若是想把顯卡弄得支持最高版本的cuda,ATP的方式是從新下載顯卡驅動。由於ATP一開始的顯卡只支持到9.2,但從新下了驅動之後忽然神奇地變成了支持10.2。
順便,ATP的顯卡是1050Ti。
另外,要查看目前的tensorflow是支持CPU仍是GPU,能夠輸入這一段代碼:
import os from tensorflow.python.client import device_lib os.environ["TF_CPP_MIN_LOG_LEVEL"]="99" if __name__=="__main__": print(device_lib.list_local_devices())
而後,沒了。ATP要是哪天再把它如今的版本卸了而後遇到了新的坑再來補。
反正關鍵問題就是找好對應的cuda版本,而後把cudnn放到正確的地方就沒問題了。