TensorFlow的環(huán)境配置與安裝教程詳解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
記錄一下安裝win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5
之前已經(jīng)安裝過pycharm、Anaconda以及VS2013,因此,安裝記錄從此后開始
總體步驟大致如下:
1、確認(rèn)自己電腦顯卡型號(hào)是否支持CUDA(此處有坑)
此處有坑!不要管NVIDIA控制面板組件中顯示的是CUDA9.2.148。
你下載的CUDA不一定需要匹配,尤其是CUDA9.2,最好使用CUDA9.0,我就在此坑摔的比較慘。
2、下載CUDA以及cuDNN,注意版本對應(yīng)①查看版本匹配:
https://www.tensorflow.org/install/source_windows
②下載CUDA:
https://developer.nvidia.com/cuda-toolkit-archive
官網(wǎng)上下載的CUDA 9.0有好幾個(gè)版本,其中主要是cuda_9.0.176_win10.exe,其他的四個(gè)是補(bǔ)丁。
③下載cuDNN:
https://developer.nvidia.com/cudnn
https://developer.nvidia.com/rdp/cudnn-archive
下載cuDNN需要注冊一個(gè)NVIDIA的賬號(hào)。
3、安裝CUDA和cuDNN,并設(shè)置環(huán)境變量(重要)①CUDA安裝
我是按照默認(rèn)路徑安裝的,沒有修改。此外,使用自定義安裝,但是幾乎全選了,除了一個(gè)當(dāng)前版本已經(jīng)是最新版本的組件沒有勾選。
切記CUDA的安裝路徑,因?yàn)榘惭bcuDNN以及設(shè)置環(huán)境變量時(shí)需要。
②cuDNN9.0安裝
cuDNN是一個(gè)壓縮包,解壓后的內(nèi)容如下
:
全選并復(fù)制所有內(nèi)容,粘貼到CUDA的安裝路徑下,默認(rèn)路徑是:
③設(shè)置環(huán)境變量(重要)
這部分我主要參考的是:https://blog.csdn.net/qilixuening/article/details/77503631
計(jì)算機(jī)上點(diǎn)右鍵,打開屬性->高級(jí)系統(tǒng)設(shè)置->環(huán)境變量,可以看到系統(tǒng)中多了兩個(gè)環(huán)境變量,接下來,分別是:
CUDA_PATH和CUDA_PATH_V8_0。
還要在系統(tǒng)變量中新建以下幾個(gè)環(huán)境變量:
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
如下圖所示:
然后在系統(tǒng)變量中找到 PATH,點(diǎn)擊編輯并添加:
%CUDA_LIB_PATH%
%CUDA_BIN_PATH%
%CUDA_SDK_LIB_PATH%
%CUDA_SDK_BIN_PATH%
再添加如下4條(默認(rèn)安裝路徑):
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\common\lib\x64;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64;
如果你選用了自定義路徑,上述這些默認(rèn)路徑都應(yīng)該相應(yīng)替換為你的自定義路徑。
④查驗(yàn)是否安裝成功
重啟計(jì)算機(jī)(必須),然后在Anaconda prompt中輸入nvcc -V。(注意,V是大寫)返回以下信息則安裝成功。
4、創(chuàng)建tensorflow-gpu環(huán)境并激活
(此部分可參考的教程比較多,可自行搜索)
①conda create --name tensorflow-gpu python=3.5
在Anaconda Prompt 中輸入conda create --name tensorflow-gpu python=3.5,創(chuàng)建名為tensorflow-gpu的環(huán)境(名字可以自己改,不一定都叫tensorflow-gpu)。
②activate tensorflow-gpu
按照提示,接下來activate tensorflow-gpu,進(jìn)入到新創(chuàng)建的環(huán)境,退出時(shí)使用deactivate
③conda info --envs
最后,conda info --envs,查看創(chuàng)建的所有環(huán)境,確保tensorflow-gpu環(huán)境創(chuàng)建成功
5、安裝tensorflow-gpu
使用activate進(jìn)入到tensorflow-gpu環(huán)境,使用以下命令進(jìn)行安裝:
pip install --ignore-installed --upgrade tensorflow-gpu==1.12.0
如果安裝緩慢請參考其他教程換源。
6、查驗(yàn)tensorflow是否安裝成功
這部分主要參考:https://zhuanlan.zhihu.com/p/58607298
①activate到tensorflow-gpu環(huán)境中然后輸入python進(jìn)入到python中,輸入一下代碼:
import tensorflow as tf hello = tf.constant('Hello , Tensorflow! ') sess = tf.Session() print(sess.run(hello))
預(yù)期輸出:
b'Hello , Tensorflow! '
中間會(huì)有一大堆關(guān)于 GPU的Log信息,例如:
2020-06-22 09:47:38.562662: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2020-06-22 09:47:39.111893: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties:
name: GeForce GTX 1060 major: 6 minor: 1 memoryClockRate(GHz): 1.6705
pciBusID: 0000:01:00.0
totalMemory: 6.00GiB freeMemory: 4.97GiB
2020-06-22 09:47:39.134322: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0
2020-06-22 09:47:41.602201: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-06-22 09:47:41.612905: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988] 0
2020-06-22 09:47:41.618302: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0: N
2020-06-22 09:47:41.631165: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 4722 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060, pci bus id: 0000:01:00.0, compute capability: 6.1)
如果只是平時(shí)做小規(guī)模的訓(xùn)練,可以在Python Code前設(shè)置log等級(jí):
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
如果想徹底解決,請參考:http://www.dbjr.com.cn/article/189242.htm
②查看TensorFlow和Keras版本:
import tensorflow as tf from tensorflow.keras import layers print(tf.VERSION) print(tf.keras.__version__)
輸出:
1.12.0
2.1.6-tf
7、在pycharm中調(diào)用tensorflow,
并查驗(yàn)tensorflow是否能夠調(diào)用gpu做運(yùn)算
①在PyCharm中新建Project
②進(jìn)入中Existing interpreter右側(cè)瀏覽目錄
③在Interpreter右側(cè)瀏覽目錄中找到自己安裝Anaconda的路徑,在其中的envs文件夾中,有上文中自己創(chuàng)建的tensorflow-gpu環(huán)境,選中其中python.exe即可。
④在pycharm中查驗(yàn)tensorflow是否能夠調(diào)用gpu做運(yùn)算查驗(yàn)tensorflow是否能夠調(diào)用gpu做運(yùn)算:
創(chuàng)建一個(gè).py文件,用TensorFlow,來比較一下CPU和GPU的時(shí)間差異:
例子來源:https://zhuanlan.zhihu.com/p/58607298
import tensorflow as tf import timeit import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # See https://www.tensorflow.org/tutorials/using_gpu#allowing_gpu_memory_growth config = tf.ConfigProto() config.gpu_options.allow_growth = True with tf.device('/cpu:0'): random_image_cpu = tf.random_normal((100, 1000, 100, 3)) net_cpu = tf.layers.conv2d(random_image_cpu, 32, 7) net_cpu = tf.reduce_sum(net_cpu) with tf.device('/gpu:0'): random_image_gpu = tf.random_normal((100, 1000, 100, 3)) net_gpu = tf.layers.conv2d(random_image_gpu, 32, 7) net_gpu = tf.reduce_sum(net_gpu) sess = tf.Session(config=config) # Test execution once to detect errors early. try: sess.run(tf.global_variables_initializer()) except tf.errors.InvalidArgumentError: print( '如果出了這個(gè)Error表示GPU配置不成功!\n\n') raise def cpu(): sess.run(net_cpu) def gpu(): sess.run(net_gpu) # Runs the op several times. print('Time (s) to convolve 32x7x7x3 filter over random 100x1000x100x3 images ' '(batch x height x width x channel). Sum of ten runs.') print('CPU (s):') cpu_time = timeit.timeit('cpu()', number=10, setup="from __main__ import cpu") print(cpu_time) print('GPU (s):') gpu_time = timeit.timeit('gpu()', number=10, setup="from __main__ import gpu") print(gpu_time) print('GPU speedup over CPU: {}x'.format(int(cpu_time / gpu_time))) sess.close()
輸出:
Time (s) to convolve 32x7x7x3 filter over random 100x1000x100x3 images (batch x height x width x channel). Sum of ten runs.
CPU (s):
25.24234085335886
GPU (s):
1.5711942943447745
GPU speedup over CPU: 16x
輸出表明:這個(gè)任務(wù)GPU和6個(gè)i7的CPU相比快了16倍!
安裝踩坑總結(jié):
其中最大的坑就是CUDA、cuDNN、tensorflow-gpu以及python版本之間的匹配了。有時(shí)候明明按照官方的版本匹配列表安裝,也是不行。
安裝之后如果出現(xiàn)“ImportError: DLL load failed: 找不到指定的模塊”錯(cuò)誤,一般問題都是出在了版本不匹配上。
最需要注意的是CUDA9.2 。最初在NVIDIA控制面板,顯示我的顯卡支持CUDA 9.2.148,因此我按照推薦列表,選擇tensorflow-gpu1.12.0+cuDNN 7.5.0.56+CUDA 9.2.148 +python3.5.5。注意此處有坑??!無論如何都是安裝不成功,一直都是“ImportError: DLL load failed: 找不到指定的模塊”這個(gè)錯(cuò)誤。
后來看到有網(wǎng)友說,推薦列表中只給出CUDA版本號(hào) 的第一位,一般使用的都是CUDA9.0或者CUDA10.0,后面版本可能會(huì)出現(xiàn)不兼容。
于是,卸載CUDA9.2(不要管NVIDIA控制面板組件中顯示的是CUDA9.2.148,不一定需要匹配),重新在推薦列表中尋找匹配的cuDNN以及tensorflow-gpu版本,最后成功安裝。
總結(jié)
到此這篇關(guān)于TensorFlow的環(huán)境配置與安裝教程詳解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)的文章就介紹到這了,更多相關(guān)TensorFlow環(huán)境配置與安裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Win10下安裝CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+paddlepaddle-gpu2.0.0
- 詳解Tensorflow不同版本要求與CUDA及CUDNN版本對應(yīng)關(guān)系
- Visual Studio 2019下配置 CUDA 10.1 + TensorFlow-GPU 1.14.0
- Win10下安裝并使用tensorflow-gpu1.8.0+python3.6全過程分析(顯卡MX250+CUDA9.0+cudnn)
- tensorflow -gpu安裝方法(不用自己裝cuda,cdnn)
- Win10 GPU運(yùn)算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.14.0)
相關(guān)文章
pytorch加載的cifar10數(shù)據(jù)集過程詳解
這篇文章主要介紹了pytorch加載的cifar10數(shù)據(jù)集,到底有沒有經(jīng)過歸一化,本文對這一問題給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11Python中使用異常處理來判斷運(yùn)行的操作系統(tǒng)平臺(tái)方法
這篇文章主要介紹了Python中使用異常處理來判斷運(yùn)行的操作系統(tǒng)平臺(tái)方法,這個(gè)方法比較新穎,,需要的朋友可以參考下2015-01-01Python基于opencv的圖像壓縮算法實(shí)例分析
這篇文章主要介紹了Python基于opencv的圖像壓縮算法,結(jié)合實(shí)例形式分析了使用opencv進(jìn)行圖像壓縮的常用操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05關(guān)于python導(dǎo)入模塊import與常見的模塊詳解
今天小編就為大家分享一篇關(guān)于python導(dǎo)入模塊import與常見的模塊詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python+selenium實(shí)現(xiàn)自動(dòng)循環(huán)扔QQ郵箱漂流瓶
這篇文章主要為大家詳細(xì)介紹了Python+selenium實(shí)現(xiàn)自動(dòng)循環(huán)扔QQ郵箱漂流瓶,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Python中Pickling和Unpickling的區(qū)別詳解
在本文中,我們將探討 Python 中 pickling 和 unpickling 之間的主要區(qū)別,我們將詳細(xì)討論 Python pickling 和 unpickling 的概念,包括它們的目的、語法、用法以及安全可靠的 pickling 和 unpickling 操作的注意事項(xiàng),需要的朋友可以參考下2023-09-09