Tensorflow 1.9适用于CPU,不带GPU时仍需要cudNN - Windows

hgncfbus  于 2023-02-24  发布在  Windows
关注(0)|答案(2)|浏览(136)

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

pip install tensorflow

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

ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'

按照link2link3等各种链接进行操作后,我安装了Visual studio update 3并使用了tensorflow self check提供的脚本,但遇到了以下错误:

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

为什么我的Tensorflow在没有GPU的情况下安装它,却要寻找这些软件包?我的系统目前没有GPU。我尝试卸载并重新安装升级的pip 18.0,但问题仍然存在。如何解决这个问题?

wqsoz72f

wqsoz72f1#

来自该链接的自检脚本标记为“DEPRECATED”,因此它可能不适用于最新版本(至少不适用于带GPU的TensorFlow 1.9,因为这需要cudart64_90.dll而不是cudart64_80.dll)。此外,脚本简单地检查CPU或GPU版本可能需要的所有可能丢失的文件。详细的消息告诉你哪些文件只需要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旁边的?指示)。
1.查找缺少的DLL的信息并安装适当的程序包以解决问题。
在我的例子中,缺少的库是VCOMP140.dll,这是Microsoft的OpenMP库,1.8版本不需要。我安装了VC++ Redistributable for VS 2017,问题解决了。

x8diyxa7

x8diyxa72#

状态2020年7月12日:

tensorflow-gpu被集成到常规安装中-这会导致问题,在您的情况下也是如此。从版本2.0.0-see here on github开始就是这样。
here on github中可以找到大量不同的wheels/兼容性列表,通过使用它,你可以降级到几乎所有可用的版本,并结合相应的for python。例如:

pip install tensorflow==2.0.0

(What你需要注意的是你不能安装任意版本的tensorflow,它们必须与你的python安装相对应。所以在安装Python3.7.83.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也很有用。
如果你只需要最新的版本(听起来不像你的问题),当前wheel包的url列表可以在tensorflow页面上找到,这就是SO-answer

相关问题