您好,登錄后才能下訂單哦!
裝tensorflow-gpu的時候經常遇到問題,自己裝過幾次,經常遇到相同或者類似的問題,所以打算記錄一下,也希望對其他人有所幫助
安裝完之后會用import tensorflow看是否安裝成功,結果報錯,主要有碰到下面兩大類報錯信息:
報錯信息里面有大量的pywrap_xxx相關的腳本報錯:
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: 找不到指定的模塊。
這類錯誤出現的最多,主要有幾大類原因:
這個是自己第一次裝的時候碰到的,下載 vc_redist.x64.exe 安裝之后就ok了
再生波瀾
自己今天再裝的時候,下載下來發現安裝不了,看日志是說我的vs版本比較新,所以不能裝。這個時候可以可以看看自己本機的system32下面有沒有MSVCP140.DLL這個文件
其他解決方案
有些網友說用的比較新的tensorflow,裝了2017的Redistributable包就好了,你也可以試試
我再裝完2017的包之后,并且檢查自己系統中已經有了MSVCP140.DLL文件依舊報同樣的錯誤
這個問題也是非常多的,我裝了很多次的cuda基本上沒有安裝失敗過,但是遇到和cudnn版本不一致的情況。因為下載的cuda默認是最新版本的cuda10.0,而我下載的cudnn當時用的舊的,也就是給cuda9.0的,所以后面換了一下也就解決問題了
cuda下載
我這里默認點完自己系統的配置(win10x64)得到的是最新的cuda10-win10,可以點擊最右邊的Legacy Releases看到更早一點的版本
cuda安裝和驗證
一路next貌似沒遇到過啥問題
驗證的話:在命令行下面輸入nvcc -V,看是否OK
另外sample下面的兩個是deviceQuery.exe和bandwidthTest.exe執行都沒有出現問題過
cudnn下載
要登錄nvidia developer賬號
點開最下面的Archived cuDNN Releases可以看到更多的版本,因為我下載的是cuda-9.0,穩妥起見,我下載的cudnn版本是:Download cuDNN v7.0.5 (Dec 5, 2017), for CUDA 9.0
按照道理來講這里的Download cuDNN v7.5.0 (Feb 21, 2019), for CUDA 9.0應該也可以,下次驗證再確認一下。
cudnn安裝
在下載的頁面可以打開Installation-Guide看一下windows的cudnn安裝指南,主要有以下操作
(1)把解壓縮的cudnn下面的bin、lib和include三個文件夾下面的文件拷貝到cuda安裝的目錄下面同名的目錄下面
cuda路徑:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
(2)把CUDA路徑添加到環境變量的CUDA_PATH中
cuda本書在安裝的時候會把cuda的安裝路徑添加的環境變量的path中(注意:是在path的最前面,不容易看到),所以不必自己把cuda的路徑添加到path中
這里自己是把解壓后的cudnn放到d盤,比如:D\cuda,然后把D:\cuda\bin放到了path中,因為網上有些人是這樣建議的。但是看cudn的安裝指南并沒有提及到,所以感覺應該不需要
很遺憾的是,今天保證這里版本一直之后,還是依舊報 = =
(3)tensorflow-gpu版本不一致
安裝tensorflow-gpu的時候一般都是用的默認指令:
pip install --upgrade tensorflow-gpu
結果是會把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,然后完美解決問題了。_
pip uninstall tensorflow-gpu==1.13.0 pip install tensorflow-gpu==1.12.0
這里說明tensorflow-gpu1.13.0估計是用了最新的cuda版本中的內容,也算是版本不一致了。
如果跟我一樣,上面的問題都解決了,那就看看是不是這里版本太新或者太舊了。這里有個插曲,因為我開始不小心把1.12.0輸成了1.2.0,結果還是不行,沒注意結果純粹浪費了一段時間。
(4)其他python庫版本問題等
網上有些人還遇到numpy等python庫版本等的問題,我倒是沒遇到,因為安裝tensorflw-gpu的時候會把相關的依賴包都給下載下來
報錯信息如下有graph_xxx相關的腳本報錯:
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: 找不到指定的程序。
這個我碰到過兩次,都是protobuf的版本高了的緣故,網上搜到的也是這個原因,把protobuf的版本從3.6.1降到3.6.0解決
pip list pip uninstall protobuf pip install protobuf==3.6.0 pip list
參考
[1]import error: load dll failed
總結
以上所述是小編給大家介紹的tensorflow-gpu安裝的常見問題及解決方案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。