首页 > 解决方案 > 用于 CPU 的 Tensorflow 1.9,没有 GPU 仍然需要 cudNN - Windows

问题描述

我正在使用 python 3.6.3 并使用 tensorflow 1.9、pip 18.0 的 Win10 机器上工作。我没有提供使用 gpu 安装 tensorflow 的选项(即),根据此链接1,我使用了

    pip install tensorflow

并且没有提供使用 GPU 的选项。但是,在尝试导入tensorflow 时,我遇到了以下错误

    ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'

在遵循各种链接link2link3 之后,我安装了Visual Studio 更新 3并使用了提供的脚本tensorflow self check,并遇到了以下错误:

    Could not load 'cudart64_80.dll'. .....
    Could not load 'nvcuda.dll' .......
    Could not load 'cudnn64_5.dll' ........

当我在没有 GPU 的情况下安装 Tensorflow 时,为什么要寻找这些包?我的系统目前没有 GPU。我尝试使用升级的 pip 18.0卸载并重新安装,但问题仍然存在。这怎么能纠正。?

标签: pythontensorflowgpupython-3.6

解决方案


该链接中的自检脚本被标记为“已弃用”,因此它可能不适用于最新版本(至少不适用于带有 GPU 的 TensorFlow 1.9,因为这需要 cudart64_90.dll 而不是 cudart64_80.dll)。此外,该脚本仅检查 CPU 或 GPU 版本可能需要的所有可能丢失的文件。详细信息会告诉您哪些文件只有 GPU 版本才需要。

如果不确定,您可以首先通过执行pip show tensorflow-gpu. 如果您只安装了 CPU 版本,则应该没有任何显示。

我昨天在将GPU版本从1.8升级到1.9时遇到了一个问题。该问题可能与您的问题不完全相同,但可能是相关的,因为我的问题也是由于 DLL 加载失败导致 _pywrap_tensorflow_internal 导入失败引起的。如果您的问题也是由堆栈跟踪消息中明确提到的DLL 加载失败引起的,您可以考虑使用这种方法来查明问题:

  1. 使用 DLL 依赖项分析器Dependencies来分析<Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd和确定确切丢失的 DLL(由?DLL 旁边的 a 表示)。

  2. 查找缺少的 DLL 的信息并安装相应的软件包以解决问题。

在我的情况下,缺少的库是VCOMP140.dll,这是 Microsoft 的 OpenMP 库,1.8 版本不需要。我为 VS 2017 安装了 VC++ Redistributable,问题得到解决。


推荐阅读