TensorFlow中屏蔽warning的方法
問題
使用sudo pip3 install tensorflow安裝完CPU版tensorflow後,運行簡單的測試程序,出現如下警告:
I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
分析
報錯的大概意思是:你的CPU支持AVX擴展,但是你安裝的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!)。
在此強調一下: 這只限於CPU。
- 如果安裝的是GPU版本 如果你有一個GPU,你不應該關心AVX的支持,因為大多數昂貴的操作將被分派到一個GPU設備上(除非明確地設置)。在這種情況下,您可以簡單地忽略此警告(采用下面的任一方法)
- 如果您沒有GPU並且希望盡可能多地利用CPU,那麽如果您的CPU支持AVX,AVX2和FMA,則應該從針對CPU優化的源構建tensorflow。
針對CPU優化的源構建tensorflow感覺有點麻煩(其實是我不會),對性能要求不高的情況下,可以選擇屏蔽警告。
解決方法
TensorFlow的日誌級別分為以下三種:
- TF_CPP_MIN_LOG_LEVEL = 1 //默認設置,為顯示所有信息
- TF_CPP_MIN_LOG_LEVEL = 2 //只顯示error和warining信息
- TF_CPP_MIN_LOG_LEVEL = 3 //只顯示error信息
所以,當TensorFlow出現警告信息,又不想讓警告信息顯示時,可進行如下設置:
方法一
python環境下通過在python文件中添加如下兩行代碼,設置TensorFlow日誌輸出級別。
import os os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
方法二
在linux環境下,我們可以通過linux命令,屏蔽掉TensorFlow的warning:
1、暫時屏蔽warning:
在linux終端中輸入命令:export TF_CPP_MIN_LOG_LEVEL=2,當該終端關閉,既失效; 2、永久屏蔽warning: 修改/etc/profile文件,在該文件中加入:export TF_CPP_MIN_LOG_LEVEL=2
但是修改後需要重啟系統或者使用source /etc/profile命令,使修改後的profile文件生效。
參考鏈接:
1、https://blog.csdn.net/guilutian0541/article/details/81213764
2、https://www.cnblogs.com/suizhikuo/p/9935554.html
TensorFlow中屏蔽warning的方法