警告
运行tensorflow时遇到了这样的问题:
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
大概意思是:你的CPU支持AVX扩展,但是你安装的TensorFlow版本无法编译使用。这个不是错误,只是一个警告,告诉你如果从源代码安装tensorflow,那么tensorflow会跑得更快。
原因
除了通常的算术和逻辑,现代CPU提供了许多低级指令,称为扩展,例如, SSE2,SSE4,AVX等来自维基百科:
高级矢量扩展(AVX)是英特尔在2008年3月提出的英特尔和AMD微处理器的x86指令集体系结构的扩展,英特尔首先通过Sandy Bridge处理器在2011年第一季度推出,随后由AMD推出Bulldozer处理器在2011年第三季度.AVX提供了新功能,新指令和新编码方案。
特别是,AVX引入了融合乘法累加(FMA)操作,加速了线性代数计算,即点积,矩阵乘法,卷积等。几乎所有机器学习训练都涉及大量这些操作,因此将会支持AVX和FMA的CPU(最高达300%)更快。该警告指出您的CPU确实支持AVX(hooray!)。
由于tensorflow默认分布是在没有CPU扩展的情况下构建的,例如SSE4.1,SSE4.2,AVX,AVX2,FMA等。默认版本(来自pip install tensorflow的版本)旨在与尽可能多的CPU兼容。另一个观点是,即使使用这些扩展名,CPU的速度也要比GPU慢很多,并且期望在GPU上执行中型和大型机器学习培训。
解决办法
- 第一种解决方法是直接忽略警告,这种方法简单粗暴,但是实际上并没有解决问题,在代码中加入如下两句即可:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
- 第二种方法就是麻烦的用源代码安装tensorflow