1. 程式人生 > >TensorFlow中屏蔽warning的方法

TensorFlow中屏蔽warning的方法

融合 ins 1年 構建 hat tar 功能 export ref

問題

使用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。

  1. 如果安裝的是GPU版本 如果你有一個GPU,你不應該關心AVX的支持,因為大多數昂貴的操作將被分派到一個GPU設備上(除非明確地設置)。在這種情況下,您可以簡單地忽略此警告(采用下面的任一方法)
  2. 如果您沒有GPU並且希望盡可能多地利用CPU,那麽如果您的CPU支持AVX,AVX2和FMA,則應該從針對CPU優化的源構建tensorflow。

針對CPU優化的源構建tensorflow感覺有點麻煩(其實是我不會),對性能要求不高的情況下,可以選擇屏蔽警告。

解決方法

TensorFlow的日誌級別分為以下三種:

  1. TF_CPP_MIN_LOG_LEVEL = 1 //默認設置,為顯示所有信息
  2. TF_CPP_MIN_LOG_LEVEL = 2 //只顯示error和warining信息
  3. 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的方法