适用于CPU的Tensorflow 1.9,无GPU仍需要cudNN-Windows

时间:2018-07-31 03:36:43

标签: python tensorflow gpu python-3.6

我正在使用python 3.6.3并使用tensorflow 1.9,pip 18.0的Win10计算机上工作。根据我使用过的link1,我没有提供使用gpu(即)安装tensorflow的选项。

    pip install tensorflow

,并且未提供使用GPU的选项。但是,当尝试导入张量流时,我遇到以下错误

    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 进行卸载和重新安装,但是问题仍然存在。该如何纠正??

2 个答案:

答案 0 :(得分:2)

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

如果不确定,请首先通过执行pip show tensorflow-gpu再次检查是否未安装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旁边的?表示)。

  2. 查找丢失的DLL的信息,然后安装适当的软件包以解决问题。

就我而言,缺少的库是VCOMP140.dll,它是Microsoft的OpenMP库,而1.8版本并不需要。我安装了VC++ Redistributable for VS 2017,问题已解决。

答案 1 :(得分:0)

状态2020-07-12:tensorflow-gpu已集成到常规安装中-这同样会引起问题。从2.0.0版开始就是如此-参见here on github

here on github可以找到大量不同的轮子/兼容性。 通过使用它,您可以将python的相应版本降级到几乎每个可用版本。例如:

pip install tensorflow==2.0.0

(您需要注意的是,您无法安装tensorflow的任意版本,它们必须与您的python安装相对应。因此在将Python 3.7.8与3.8.3一起安装之前(或类似情况),你会得到

ERROR: Could not find a version that satisfies the requirement tensorflow==2.0.0 (from versions: 2.2.0rc1, 2.2.0rc2, 2.2.0rc3, 2.2.0rc4, 2.2.0, 2.3.0rc0, 2.3.0rc1)
ERROR: No matching distribution found for tensorflow==2.0.0

除了您的不带GPU的用例之外,这对于不带AVX支持的旧式CPU和计算能力过低的GPU也应该很有用。


如果您只需要最新的发行版(听起来好像不是问题),请在this tensorflow page上找到当前滚轮套件的URL列表。这是来自这个SO-answer

注意:不同版本的This link to a list对我不起作用。