裝tensorflow-gpu的時(shí)候經(jīng)常遇到問(wèn)題,自己裝過(guò)幾次,經(jīng)常遇到相同或者類似的問(wèn)題,所以打算記錄一下,也希望對(duì)其他人有所幫助
基本信息
- tensorflow-gpu
- pip安裝(virtualenv等虛擬安裝實(shí)質(zhì)也是pip安裝,只是建了個(gè)獨(dú)立的環(huán)境,不會(huì)影響系統(tǒng)環(huán)境,查問(wèn)題比較容易,最多重新再創(chuàng)建一個(gè)干凈的環(huán)境再來(lái))
安裝完之后會(huì)用import tensorflow看是否安裝成功,結(jié)果報(bào)錯(cuò),主要有碰到下面兩大類報(bào)錯(cuò)信息:
1.ImportError: DLL load failed: 找不到指定的模塊 之pywrap_tensorflow.py
報(bào)錯(cuò)信息里面有大量的pywrap_xxx相關(guān)的腳本報(bào)錯(cuò):
1
2
3
4
5
6
7
8
9
10
11
12
|
Traceback (most recent call last): File "E:\study\machinelearning\ENV\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module> from tensorflow.python.pywrap_tensorflow_internal import * File "E:\study\machinelearning\ENV\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module> _pywrap_tensorflow_internal = swig_import_helper() File "E:\study\machinelearning\ENV\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) File "E:\study\machinelearning\ENV\lib\imp.py", line 242, in load_module return load_dynamic(name, filename, file) File "E:\study\machinelearning\ENV\lib\imp.py", line 342, in load_dynamic return _load(spec) ImportError: DLL load failed: 找不到指定的模塊。 |
這類錯(cuò)誤出現(xiàn)的最多,主要有幾大類原因:
(1)Microsoft Visual C++ 2015 Redistributable Update 3 沒(méi)有裝
這個(gè)是自己第一次裝的時(shí)候碰到的,下載 vc_redist.x64.exe 安裝之后就ok了
再生波瀾
自己今天再裝的時(shí)候,下載下來(lái)發(fā)現(xiàn)安裝不了,看日志是說(shuō)我的vs版本比較新,所以不能裝。這個(gè)時(shí)候可以可以看看自己本機(jī)的system32下面有沒(méi)有MSVCP140.DLL這個(gè)文件
其他解決方案
有些網(wǎng)友說(shuō)用的比較新的tensorflow,裝了2017的Redistributable包就好了,你也可以試試
我再裝完2017的包之后,并且檢查自己系統(tǒng)中已經(jīng)有了MSVCP140.DLL文件依舊報(bào)同樣的錯(cuò)誤
(2)cuda和cudnn版本不一致
這個(gè)問(wèn)題也是非常多的,我裝了很多次的cuda基本上沒(méi)有安裝失敗過(guò),但是遇到和cudnn版本不一致的情況。因?yàn)橄螺d的cuda默認(rèn)是最新版本的cuda10.0,而我下載的cudnn當(dāng)時(shí)用的舊的,也就是給cuda9.0的,所以后面換了一下也就解決問(wèn)題了
我這里默認(rèn)點(diǎn)完自己系統(tǒng)的配置(win10x64)得到的是最新的cuda10-win10,可以點(diǎn)擊最右邊的Legacy Releases看到更早一點(diǎn)的版本
cuda安裝和驗(yàn)證
一路next貌似沒(méi)遇到過(guò)啥問(wèn)題
驗(yàn)證的話:在命令行下面輸入nvcc -V,看是否OK
另外sample下面的兩個(gè)是deviceQuery.exe和bandwidthTest.exe執(zhí)行都沒(méi)有出現(xiàn)問(wèn)題過(guò)
要登錄nvidia developer賬號(hào)
點(diǎn)開(kāi)最下面的Archived cuDNN Releases可以看到更多的版本,因?yàn)槲蚁螺d的是cuda-9.0,穩(wěn)妥起見(jiàn),我下載的cudnn版本是:Download cuDNN v7.0.5 (Dec 5, 2017), for CUDA 9.0
按照道理來(lái)講這里的Download cuDNN v7.5.0 (Feb 21, 2019), for CUDA 9.0應(yīng)該也可以,下次驗(yàn)證再確認(rèn)一下。
cudnn安裝
在下載的頁(yè)面可以打開(kāi)Installation-Guide看一下windows的cudnn安裝指南,主要有以下操作
(1)把解壓縮的cudnn下面的bin、lib和include三個(gè)文件夾下面的文件拷貝到cuda安裝的目錄下面同名的目錄下面
cuda路徑:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
(2)把CUDA路徑添加到環(huán)境變量的CUDA_PATH中
cuda本書(shū)在安裝的時(shí)候會(huì)把cuda的安裝路徑添加的環(huán)境變量的path中(注意:是在path的最前面,不容易看到),所以不必自己把cuda的路徑添加到path中
這里自己是把解壓后的cudnn放到d盤,比如:D\cuda,然后把D:\cuda\bin放到了path中,因?yàn)榫W(wǎng)上有些人是這樣建議的。但是看cudn的安裝指南并沒(méi)有提及到,所以感覺(jué)應(yīng)該不需要
很遺憾的是,今天保證這里版本一直之后,還是依舊報(bào) = =
(3)tensorflow-gpu版本不一致
安裝tensorflow-gpu的時(shí)候一般都是用的默認(rèn)指令:
1
|
pip install --upgrade tensorflow-gpu |
結(jié)果是會(huì)把tensorflow-gpu的最新版本裝上,我的版本情況如下:
(1)python:3.6.0 (2)cuda-9.0 (3)cudnn-7.0 (4)tensorflow-gpu-1.13.0
最新的cuda是10.0了,但是我裝的是9.0,所以我把tensorflow-gpu裝到1.12.0,然后完美解決問(wèn)題了。_
1
2
3
|
pip uninstall tensorflow-gpu==1.13.0 pip install tensorflow-gpu==1.12.0 |
這里說(shuō)明tensorflow-gpu1.13.0估計(jì)是用了最新的cuda版本中的內(nèi)容,也算是版本不一致了。
如果跟我一樣,上面的問(wèn)題都解決了,那就看看是不是這里版本太新或者太舊了。這里有個(gè)插曲,因?yàn)槲议_(kāi)始不小心把1.12.0輸成了1.2.0,結(jié)果還是不行,沒(méi)注意結(jié)果純粹浪費(fèi)了一段時(shí)間。
(4)其他python庫(kù)版本問(wèn)題等
網(wǎng)上有些人還遇到numpy等python庫(kù)版本等的問(wèn)題,我倒是沒(méi)遇到,因?yàn)榘惭btensorflw-gpu的時(shí)候會(huì)把相關(guān)的依賴包都給下載下來(lái)
2.TensorFlow pip installation issue: cannot import name 'descriptor'之graph_pb2.py
報(bào)錯(cuò)信息如下有g(shù)raph_xxx相關(guān)的腳本報(bào)錯(cuò):
1
2
3
4
5
6
7
8
9
10
11
|
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "F:\study\machinelearning\ENV\lib\site-packages\tensorflow\__init__.py", line 24, in <module> from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import File "F:\study\machinelearning\ENV\lib\site-packages\tensorflow\python\__init__.py", line 59, in <module> from tensorflow.core.framework.graph_pb2 import * File "F:\study\machinelearning\ENV\lib\site-packages\tensorflow\core\framework\graph_pb2.py", line 6, in <module> from google.protobuf import descriptor as _descriptor File "F:\study\machinelearning\ENV\lib\site-packages\google\protobuf\descriptor.py", line 47, in <module> from google.protobuf.pyext import _message ImportError: DLL load failed: 找不到指定的程序。 |
這個(gè)我碰到過(guò)兩次,都是protobuf的版本高了的緣故,網(wǎng)上搜到的也是這個(gè)原因,把protobuf的版本從3.6.1降到3.6.0解決
1
2
3
4
|
pip list pip uninstall protobuf pip install protobuf==3.6.0 pip list |
參考
[1]import error: load dll failed
總結(jié)
以上所述是小編給大家介紹的tensorflow-gpu安裝的常見(jiàn)問(wèn)題及解決方案,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
原文鏈接:https://blog.csdn.net/pkxpp/article/details/88925868