安装 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 问题的主要内容,如果未能解决你的问题,请参考以下文章
求助tensorflow下遇到cuda compute capability问题
GPU 上的 tensorflow:没有已知设备,尽管 cuda 的 deviceQuery 返回“PASS”结果