无论是tensorflow的CPU版本还是GPU版本,其启动都需要经过CPU的指令,如果指令集缺失就会报错。
这些报错的原因很有可能是你的CPU过老,或者规格属于服务器级别,如旧版本的志强系列CPU,这一切的原因都有可能造成 ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败 报错,如:
>>> import tensorflow as tf
Traceback (most recent call last):
File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in
_pywrap_tensorflow_internal = swig_import_helper()
File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "I:\Anaconda3\lib\imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "I:\Anaconda3\lib\imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "", line 1, in
File "I:\Anaconda3\lib\site-packages\tensorflow\__init__.py", line 24, in
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "I:\Anaconda3\lib\site-packages\tensorflow\python\__init__.py", line 49, in
from tensorflow.python import pywrap_tensorflow
File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in
_pywrap_tensorflow_internal = swig_import_helper()
File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "I:\Anaconda3\lib\imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "I:\Anaconda3\lib\imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败。
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/errors
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
这样的一个错误。
一般来说,tensorflow可以需要 SSE/AVX/FMA 这几种指令集的支持,而默认下载的方式 pip install tensorflow-gpu 这样的下载方式,核心是基于 AVX 指令集,这个指令集不一定都有(常见于阉割的显卡缺失这个指令集),也有一些CPU比如本人的CPU就没有AVX指令集,但是有一个类似的指令集 AES 就依然可以达到效果,他们的具体区别如下:
AES:是高级加密标准,是一种加密算法。拥有AES-NI指令集的处理器在加解密方面会有非常大的性能飞跃。
AVX:是Intel最新推出的高级矢量扩展指令集,将浮点数性能翻了一番——从128Bit,上升至256Bit,增强了浮点数性能。
我们可以通过替换SSE版本的tensorflow进行安装,SSE指令集的功能如下,基本市面上的CPU均支持这个指令集,应用更加广泛:
SSE指令集也就是所谓胜出的”互联网SSE”指令集。SSE指令集包括了70条指令,其中包含提高3D图形运算效率的50条SIMD(单指令多数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。理论上这些指令对目前流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用。S SE指令与3DNow!指令彼此互不兼容,但SSE包含了3DNow!技术的绝大部分功能,只是实现的方法不同。SSE兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。
————《百度百科》
下载连接如下:
可以在这个网址下载到自己需要的指令集版本的tensorflow,注意CUDA和细节版本不要下载错误,主要还是支持python3.7的为主。
PS:记得提前删除已经安装的不能用的tensorflow
pip uninstall tensorflow
pip uninstall tensorflow-gpu
#删除已经安装的tensorflow
下载完成后,放置到一个合适的目录(不一定是项目文件夹或者是python的路径),之后在这个目录下打开cmd,通过pip install进行安装
Post Views:
1,572