Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 解决办法:

相信很多人导入tensorflow运算时都会遇见上图的错误,但这并不是你的错,这是你电脑CPU的错,因为你的电脑CPU太垃圾了。

这个警告是关于什么的?

除了通常的算术和逻辑之外,现代CPU提供了许多低级指令,称为扩展,例如SSE2,SSE4,AVX等。来自维基百科:

高级矢量扩展AVX)是英特尔和AMD于2008年3月提出的英特尔和AMD微处理器的x86指令集架构的扩展,并首次得到英特尔的支持,其中Sandy Bridge处理器于2011年第一季度发布,后来由AMD推出Bulldozer处理器在2011年第3季度.AVX提供新功能,新指令和新的编码方案。

特别是,AVX引入了融合乘法累加(FMA)运算,加速了线性代数计算,即点积,矩阵乘法,卷积等。几乎每一次机器学习培训都涉及大量的这些操作,因此将是支持AVX和FMA的CPU速度更快(高达300%)。警告声明您的CPU确实支持AVX(万岁!)。

我想在此强调:它只是关于CPU的

那为什么不用呢?

因为tensorflow默认分布是在没有CPU扩展的情况下构建的,例如SSE4.1,SSE4.2,AVX,AVX2,FMA等。默认构建(来自pip install tensorflow)可以与尽可能多的CPU兼容。另一个论点是,即使使用这些扩展,CPU也比GPU慢很多,并且预计可以在GPU上执行中型和大型机器学习培训。

你该怎么办?

 

如果没有GPU,并希望利用CPU尽可能的,你应该从优化源建立tensorflow 您的 CPU与AVX,AVX2,并启用了FMA如果你的CPU支持他们。在这个问题和GitHub问题中都讨论过这个问题。Tensorflow使用一个名为bazel的ad-hoc构建系统,并且构建它并不是那么简单,但肯定是可行的。在此之后,警告不仅会消失,张力流性能也会提高。

需要在最顶行写入以下代码

import os  
# os.environ["TF_CPP_MIN_LOG_LEVEL"]='1' # 这是默认的显示等级,显示所有信息  
os.environ["TF_CPP_MIN_LOG_LEVEL"]='2' # 只显示 warning 和 Error   
# os.environ["TF_CPP_MIN_LOG_LEVEL"]='3' # 只显示 Error 

 

你可能感兴趣的:(Python,机器学习)