tensorflow-gpuインストールの一般的な問題と解決策


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

参考資料

[1] インポートエラー:DLLの読み込みに失敗しました

41件のオリジナル記事を公開 賞賛7 20,000回以上の閲覧

おすすめ

転載: blog.csdn.net/pkxpp/article/details/88925868