win64下安裝tensorflow+cuda+cudnn
python小白裝tensorflow的心酸眼淚史
win64+pycharm+python3.6.6+cuda9.0+tensorflow1.10.0
一般來說,下載安裝的順序為:
幾個我借鑑的教程
-
【TensorFlow】Windows10 64 位下安裝 TensorFlow - 官方原生支援:https://blog.csdn.net/u010099080/article/details/53418159
-
windows下用pycharm安裝tensorflow簡易教程:https://blog.csdn.net/heros_never_die/article/details/79760616
-
解決Tensorflow 使用時cpu編譯不支援警告:https://blog.csdn.net/Fourierrr_/article/details/79749899
下載時用到的官方網站
-
最重要的:一定一定要安裝匹配的版本,在下網址中可以找到最新的互相匹配的版本
https://github.com/fo40225/tensorflow-windows-wheel
需要注意的是,目前(2018.9.19)tensorflow尚不支援python3.7,因此需要rensorflow的小夥伴們可能需要解除安裝重灌py 。下圖為該網站截圖,可看出對應的版本筆者根據對應版本tensorflow1.10.0+cuda9.2進行安裝後,編譯時仍提示版本不正確,於是又重新裝回9.0。
就此次坎坷的安裝經歷來看,安裝cuda9.0是最為保險的方法了。
下載tensorflow的cmd指令為:
pip install tensorflow-1.6.0-cp36-cp36m-win_amd64.whl
根據版本不同自行設定
2. 查詢顯示卡資訊、安裝最新驅動:https://www.nvidia.cn/Download/index.aspx?lang=cn
此頁面可自動檢測當前gpu型號,如果頁面顯示未安裝java的話,換一個瀏覽器或手動檢測此頁面可自動檢測當前gpu型號,如果頁面顯示未安裝java的話,可以換一個瀏覽器或者進行手動檢測
3. cuda下載(注意版本):**https://developer.nvidia.com/cuda-toolkit-archive
4. cudnn下載(需註冊和填寫問卷):**https://developer.nvidia.com/rdp/cudnn-download
一些注意事項
- 除版本問題外,cuda下載安裝時,可以先把從官網上下載的exe檔案用winrar解壓,再用setup進行安裝。這樣可以節省時間(也可以直接雙擊安裝,但系統會自動解壓,如果安裝出現問題重新安裝,系統就會二次解壓,浪費時間)
- cuda安裝時可以選擇自定義安裝,選擇安裝內容時可以點+號來檢視當前電腦版本和cuda提供版本的高低,當電腦版本高於提供版本時,完全沒有必要對該項進行安裝 (筆者為了方便,沒有改預設路徑)
- cuda不需要手動新增環境變數;cudnn需要,路徑為解壓後文件的bin目錄
- 將cudnn的資料夾複製貼上至cuda的安裝根目錄下,筆者的為C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 5.2. 5.
- 若Tensorflow使用時,出現cpu編譯不支援警告:Your CPU supports
instructions that this TensorFlow binary was not compiled to use: AVX AVX2,解決方式為——
// 只需複製貼上第二句即可
`import os os.environ["TF_CPP_MIN_LOG_LEVEL"]='1' # 這是預設的顯示等級,顯示所有資訊
os.environ["TF_CPP_MIN_LOG_LEVEL"]='2' # 只顯示 warning 和 Error
os.environ["TF_CPP_MIN_LOG_LEVEL"]='3' # 只顯示 Error`
沒錯,就是忽略它…筆者也嘗試過重新安裝最新版本cuda,發現最新版本不支援,再次裝回原版本後警告便消失了…這可能就是玄學吧
附上測試程式碼
非原創,原部落格地址在這裡~ https://blog.csdn.net/william_hehe/article/details/79615894
// An highlighted block
import tensorflow as tf
with tf.device('/cpu:0'):
a = tf.constant([1.0, 2.0, 3.0], shape=[3], name='a')
b = tf.constant([1.0, 2.0, 3.0], shape=[3], name='b')
with tf.device('/gpu:1'):
c = a + b
# 注意:allow_soft_placement=True表明:計算裝置可自行選擇,如果沒有這個引數,會報錯。
# 因為不是所有的操作都可以被放在GPU上,如果強行將無法放在GPU上的操作指定到GPU上,將會報錯。
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True))
# sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print(sess.run(c))
結果為:[ 2. 4. 6.]
結語
嚶嚶嚶,我會好好學習的