記事ディレクトリ
- 基本情報
- 1.ImportError:DLLの読み込みに失敗しました:指定されたモジュールのpywrap_tensorflow.pyが見つかりません
- (1)Microsoft Visual C ++ 2015 Redistributable Update 3がインストールされていません
- (2)cudaとcudnnのバージョンに一貫性がない
- (3)tensorflow-gpuのバージョンに一貫性がない
- (4)その他のPythonライブラリのバージョンの問題など
- 2.TensorFlow pipインストールの問題:名前「descriptor」之graph_pb2.pyをインポートできません
- 参考資料
tensorflow-gpuのインストール時に問題が発生することがよくあります。何度かインストールしたことがあり、同じまたは同様の問題が発生することが多いため、記録して他の人の役に立つことを期待しています。
基本情報
- tensorflow-gpu
- Pipインストール(virtualenvと他の仮想インストールは実際にはpipインストールですが、独立した環境を構築するだけで、システム環境には影響しません。問題をチェックし、多くてもクリーンな環境を再作成して、再び来ることが簡単です)
インストール後、インポートtensorflowを使用して、インストールが成功したかどうかを確認し、結果がエラーになることを確認します。主に次の2種類のエラーメッセージが表示されます。
1.ImportError:DLLの読み込みに失敗しました:指定されたモジュールのpywrap_tensorflow.pyが見つかりません
エラーメッセージには、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: 找不到指定的模块。
このタイプのエラーは、主にいくつかの主な原因が原因で最も多く発生します。
(1)Microsoft Visual C ++ 2015 Redistributable Update 3がインストールされていません
これは、最初にインストールしたときに発生しました。vc_redist.x64.exeをダウンロードすると、問題ありません。
-
再生波
今日再インストールしたところ、ダウンロードしてインストールできなかったのですが、ログを見るとvsバージョンが比較的新しいのでインストールできません。この時点で、ローカルマシンのsystem32にMSVCP140.DLLファイルがあるかどうかを確認できます。 -
その他のソリューション
一部のネチズンは、新しいtensorflowを使用していると言っています。2017再頒布可能パッケージをインストールするだけです。
2017パッケージを再度インストールし、システムにMSVCP140.DLLファイルが既にあることを確認した後も、同じエラーを報告しました
(2)cudaとcudnnのバージョンに一貫性がない
この問題も非常に多く、私はcudaを何度もインストールしましたが、基本的にはインストールに失敗しませんでしたが、cudnnバージョンとの不整合が発生しました。ダウンロードされたcudaはデフォルトで最新バージョンのcuda10.0になり、ダウンロードしたcudnnは古いもの、つまりcuda9.0用なので、後で変更して問題を解決しました。
-
cudaダウンロード
システムの構成(win10x64)をクリックした後、デフォルトで最新のcuda10-win10を取得しました。右端のレガシーリリースをクリックして、以前のバージョンを表示できます。 -
cudaのインストールと検証
次の方法では問題が発生していないようです。
検証:コマンドラインでnvcc -Vと入力して問題がないか確認します。
さらに、サンプルの下にある2つはdeviceQuery.exeとbandwidthTest.exeです。 -
cudnn download
nvidia開発者アカウントにログインするには
、下部にあるArchived cuDNN Releasesをクリックしてcuda-9.0をダウンロードしたので、他のバージョンを表示します。セキュリティ上の理由から、ダウンロードしたcudnnバージョンはcuDNN v7.0.5をダウンロードします(12月5日、2017)、CUDA 9.0の場合は、
ここの原則に従って、cuDNN v7.5.0をダウンロードします(2019年2月21日)。CUDA9.0の場合も可能です。次回に確認してください。 -
cudnnのインストール
ダウンロードページで、インストールガイドを開いて、Windowsのcudnnインストールガイドを確認できます。主な操作は次のとおりです。
(1)bin、libの3つのフォルダーの下にファイルをコピーし、解凍したcudnnの下にcudnnをcudaインストールに含めます。次の下に同じ名前のディレクトリのディレクトリ
CUDAのパス:C:\プログラムファイル\ NVIDIA GPUコンピューティング・ツールキット\ CUDA \ V9.0
(2)でCUDA環境変数CUDA_PATHへのパスを追加するには
CUDAのCUDAブックは、インストール時にインストールされますパスによって追加された環境変数のパス(注:パスの前にあり、簡単には見えません)。したがって、パスにcudaパスを追加する必要はありません。
ここでは、解凍されたcudnnをdドライブに配置します。例:D \ cuda、次にパスにD:\ cuda \ binを配置します。インターネット上の一部の人がこれを提案しているためです。しかし、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
これは、テンソルフローgpu1.13.0が、バージョンの不整合と見なすことができる最新のcudaバージョンのコンテンツを使用すると推定されることを示しています。
私のように、上記の問題が解決した場合は、バージョンが新しすぎるか、古すぎるかどうかを確認します。偶然に1.12.0から1.2.0を失い始めたので、ここにエピソードがありますが、結果はまだ良くなく、結果に注意を払わないと時間の無駄になります。
(4)その他のPythonライブラリのバージョンの問題など
インターネット上の何人かの人々はnumpyや他のpythonライブラリバージョンなどの問題に遭遇しましたが、テンソルflw-gpuをインストールするとすべての依存パッケージがダウンロードされるため、私はそれを発見しませんでした。
2.TensorFlow pipインストールの問題:名前「descriptor」之graph_pb2.pyをインポートできません
エラー情報は以下のとおりです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: 找不到指定的程序。
私はこれに2回遭遇しましたが、その理由はprotobufのバージョンの方が高いことです。これが、インターネットで見つけた理由でもあります。protobufのバージョンを3.6.1から3.6.0に減らしました。
pip list
pip uninstall protobuf
pip install protobuf==3.6.0
pip list