无论是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 <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _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 "<stdin>", line 1, in <module>
  File "I:\Anaconda3\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "I:\Anaconda3\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _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和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。

————《百度百科》

下载连接如下:

https://github.com/fo40225/tensorflow-windows-wheel

可以在这个网址下载到自己需要的指令集版本的tensorflow,注意CUDA和细节版本不要下载错误,主要还是支持python3.7的为主。

PS:记得提前删除已经安装的不能用的tensorflow

pip uninstall tensorflow
pip uninstall tensorflow-gpu
#删除已经安装的tensorflow

下载完成后,放置到一个合适的目录(不一定是项目文件夹或者是python的路径),之后在这个目录下打开cmd,通过pip install进行安装

 

分类: PYTHON

2 条评论

Lin · 2020年3月22日 上午1:34

您好,博主。看完你的之后大概理解了为何出错,但是具体的解决步骤还是不是很清楚,链接点进去之后想对应的下载不太懂,请问您能帮忙解答一下嘛?

    Mustenaka · 2020年3月22日 下午2:11

    你好,在github上面找到相应自己电脑配置的wheel文件之后安装即可,如果不清楚怎么对应版本的话可以参照这篇博客中的图片(略有一些旧了没有更新tf2.0的内容)http://www.mustenaka.cn/index.php/2019/07/10/removeoldvudaandinstallnew/

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注