安装 Tensorflow 的问题——不是 CUDA/CuDNN 问题

Posted

技术标签:

【中文标题】安装 Tensorflow 的问题——不是 CUDA/CuDNN 问题【英文标题】:Issue installing Tensorflow -- not a CUDA/CuDNN issue 【发布时间】:2018-10-30 00:04:06 【问题描述】:

我最近开始使用 Tensorflow,但我在安装时遇到了问题。每次我尝试导入它时,我都会收到以下错误

>>> import tensorflow as tf
Traceback (most recent call last):
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 14, in swig_import_helper
    return importlib.import_module(mname)
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 658, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 571, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 922, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 17, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 16, in swig_import_helper
    return importlib.import_module('_pywrap_tensorflow_internal')
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 14, in swig_import_helper
    return importlib.import_module(mname)
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 658, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 571, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 922, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 17, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 16, in swig_import_helper
    return importlib.import_module('_pywrap_tensorflow_internal')
  File "C:\Users\[user]\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'


Failed to load the native TensorFlow runtime.

我查看了其他与我有同样问题的堆栈溢出帖子,他们建议从 NVIDIA 获取 CUDA 库。问题是,我既没有 NVIDIA 显卡也没有 tensorflow 的 GPU 版本,所以我认为这不是问题所在。还有人建议确保安装了 Visual Studio 的 Microsoft 可再发行组件。

如果这是一个基于系统变量的问题,我将不胜感激更改系统变量的帮助,因为我是这样做的新手。谢谢!

一些系统信息:

操作系统:Microsoft Windows 10 专业版 10.0.17134 CPU:英特尔至强 E5620 显卡:Radeon RX 480 Python 版本:3.6.5 amd64 TensorFlow 安装方法:pip install tensorflow

【问题讨论】:

【参考方案1】:

我的猜测是您正在尝试使用 TF >= 1.6,因为您的 CPU 相当旧并且不支持 AVX 指令。确实从 1.6 开始,tensorflow pre-built binaries use AVX instructions。

目前您的选择是:

    使用 TF 1.5 或更早版本的官方预构建二进制文件。 (您会错过一些事情,但我想说这仍然可以)。 搜索不支持 AVX 的 TF >= 1.6 的非官方预构建二进制文件。 目前,Windows 上 conda install 的 TF 1.10 之前的预构建二进制文件似乎没有使用 AVX 支持构建,尽管我无法在任何地方找到此信息,因此无法判断这是否是故意的,以及这将持续多长时间案例。 另一方面,请注意来自 conda-forge 的二进制文件(在主通道上可用之前,它曾经是主要的 conda tensorflow 提供程序)是在支持 AVX 的情况下构建的。 更改您的硬件以支持 AVX(显然)。 在没有 AVX 指令的情况下编译您自己的 tensorflow 二进制文件。如果其他选项都不可行,这是一个合理的选择。

【讨论】:

第 1 步在***.com/questions/50476182/…解决了我的问题 @Wok 你怎么能找到 TF1.5?我也有同样的问题,但是找不到TF1.5安装【参考方案2】:

@user1735003 想通了。 我卸载了最新版本的 tensorflow

pip uninstall tensorflow

然后安装了tensorflow 1.5

pip install tensorflow==1.5

然后我验证了安装与脚本一起工作

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

我得到了正确的输出

Hello, TensorFlow!

【讨论】:

正在收集 tensorflow==1.5 找不到满足要求 tensorflow==1.5 的版本(来自版本:)没有找到 tensorflow==1.5 的匹配分布【参考方案3】:

请记住,上述答案在很多情况下都是正确的。 但是,降级到 tensorflow 1.5 可能不是最佳解决方案,因为例如,您将无法访问 tensorflow 的一些新功能,例如“急切执行”功能。

在我的情况下,我所做的是使用 conda 而不是 pip 安装 tensorflow 1.8。根据我对 conda 和 pip 的一点经验,在将所需文件放置在适当位置时,conda 似乎表现更好。

总之, 而不是pip3 install --upgrade tensorflow, 我使用了conda install tensorflow,它将正确安装最新版本。

如果您没有为 conda 命令安装 Anaconda。从here下载

【讨论】:

【参考方案4】:

如果问题仍然存在,请检查版本编号并确保 cuda 和 TF 兼容。

Check the version numbering here

或者为了更简单的方式,使用 Anaconda

conda create --name new_env_name tensorflow-gpu
activate new_env_name

我成功安装了 TensorFlow GPU 1.12 版(直到撰写本文之日为止)和 Cuda 9.0、GeForce 1050 Ti、Windows 10 和 Python 3.6.7

注意:您已经安装了 CUDA Toolkit(版本 9),以便 TensorFlow 识别您的 GPU

【讨论】:

以上是关于安装 Tensorflow 的问题——不是 CUDA/CuDNN 问题的主要内容,如果未能解决你的问题,请参考以下文章

windows10系统下安装tensorflow2.0

求助tensorflow下遇到cuda compute capability问题

普通电脑PC怎样跑TensorFlow的GPU模式

GPU 上的 tensorflow:没有已知设备,尽管 cuda 的 deviceQuery 返回“PASS”结果

tensorflow 和 torch.cuda 可以找到 GPU,但 Keras 不能

tensorflow gpu版本运行时怎么知道有没有调用gpu以及cuda加速