聲明
什么cuDNN之類的安裝,應該是毫無難度的,按照官網的教程來即可,除非。。。像我一樣踩了狗屎運。咳咳,這些問題不是本文的關鍵。
本文的關鍵是解決pip安裝tensorflow gpu版的問題。
安裝環境
操作系統:64位的Windows 10 的1709版,
顯卡:GTX 1080Ti
Python:3.6.5,64位
准廢話
在網上查了很多資料,包括tensorflow官網的安裝指南,然而總是報錯:
Could not find a version that satisfies the requirement tensorflow-gpu (from versions: )
No matching distribution found for tensorflow-gpu
實在是想不明白,官網明明寫着windows版支持python 3.6.x。。。然后我切換到3.5.x,竟然還是不行。。。Anaconda的方法也跪了。。。
官網還給出了版本要求不滿足的問題的解決方法參考資料:
然而並沒有什么卵用。。。所有的方法都試過了。只是給出的StackOverflow相關討論里有種解決方法讓我比較在意的:
官網要求用pip3來安裝,但是不記得是在哪里看到的,貌似在沒有python 2.x與python 3.x共存的情況下,pip3和pip似乎是一樣的。
出於死馬當活馬醫的念頭,就試了一下改用pip安裝,神了。。。玄學,竟然成功了一半!吐血。。。
再試試后面用在線的whl文件安裝方式。。。竟然也是成功了一半。。。
但是呀,但是,這個版本也太低了吧。本着喜新厭舊的心態,我又在StackOverflow上找到了一個鏈接:
https://storage.googleapis.com/tensorflow
這個鏈接貌似有維護着類似這個鏈接的whl文件,
$ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl
打開之后搜了一下,沒有發現有對應的windows的gpu版本。。。
怒了。。。直接去pypi官方搜tensorflow-gpu的包,竟然有找到。。。谷歌和windows什么怨什么仇。。。
快告訴我這是什么?!!!
既然是用Windows 10,而且是64位的系統和64位的 Python 3.6.5,那么自然應該選擇上圖中紅色的版本:
tensorflow_gpu-1.8.0-cp36-cp36m-win_amd64.whl
至於為什么選擇這個whl包,和它的命名規范有關,請參考:《Python Wheel 包命名規則和 ABI 兼容》https://segmentfault.com/a/1190000007591736 。
好,表演開始:
正片
第一步,安裝tensorflow-gpu
額。。。tensorboard。。。怎么又是成功了一半。。。
這里報錯的意思是找不到滿足要求的 tensorboard 版本,要求小於1.9.0,大於等於1.8.0版本。
第二步,安裝tensorboard
試試pip直接安裝:
果然還是不行。。。
再試試whl大法:
這是什么?快告訴我!!!tensorboard 1.8.0,這不是有滿足要求的包嗎?雖然我用的是清華開源鏡像,但是經過檢查,鏡像里也有這個包,怎么就不滿足版本要求了?
點進去之后選擇相應版本的whl,復制其鏈接:
pip3 install <復制的鏈接>
哎喲,還是可以的嘛
第三步,繼續安裝tensorflow-gpu
和第一步相同,用whl方式繼續安裝tensorflow-gpu,注意這一步不要用什么--ignore-installed的參數。。。
看來是成了?
注意這里假設你已經把CUDA / cuDNN之類的裝好了。
來一小段代碼試試:
import tensorflow as tf print(tf.__version__) sess = tf.Session() a = tf.constant([1.0, 2.0]) b = tf.constant([3.0, 4.0]) c = a * b print(sess.run(c)) sess.close()
如無問題,應該會打印出類似下面的結果:
注意:
- tf.Session()調用之后可能需要等一段比較長的時間才會有反應。
- 如果在import tensorflow階段就報錯了,說明還沒正常安裝或者配置好。
怎么樣?
不過這個版本很新,哈哈哈,不知道會不會有什么問題,之前在StackOverflow上看到的https://storage.googleapis.com/tensorflow 上給出的 windows gpu 版本是1.2版本的(說不定是他們寫錯了?),可是不知道為什么,后來windows gpu版本在鏈接中給出的xml文件里完全找不到了,只剩cpu版,可能是有坑還是什么的,使用的時候還請各位要多加小心,雖然我知道你們都是用linux的,哈哈哈,我的linux滾動更新掛了,莓辦法。
關於CUDA® Toolkit 9.0 安裝的坑
這坑比浪費了我很多時間,如果你用的是 Visual Studio 2017 ,恭喜你,很有可能安裝失敗,CUDA安裝包自帶的 Visual Studio Integration 組件每次安裝都是失敗的,導致整個CUDA安裝都被回滾。
只能在安裝時選擇自定義,然后取消選中Visual Studio Integration 組件。
還有就是如果之前已經裝了更加新版的Nvidia顯卡驅動或者CUDA或者Nsight時,卸了吧。Nsight也是個坑比,在Win10沒法直接卸載,官網的卸載說明也只有一句話,叫你去控制面板自己卸載。。。但是那樣是不行的,至少我這有個血淋淋的案例,你只能先卸載VS2017,否則Nsight卸載不掉,甚至你想卸載VS2017都會卡住,不知道有沒有更好的方法。如果卸載VS2017卡住了,可以用VS自帶的特殊卸載工具 InstallCleanup.exe 來卸載,而且更快。詳細說明見:https://docs.microsoft.com/en-us/visualstudio/install/remove-visual-studio
被Nsight折騰慘了的我,此刻唯有這幅圖能表達我的心情!