您好,登錄后才能下訂單哦!
這篇文章主要介紹“批標準化層tf.keras.layers.Batchnormalization的使用位置是什么”,在日常操作中,相信很多人在批標準化層tf.keras.layers.Batchnormalization的使用位置是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”批標準化層tf.keras.layers.Batchnormalization的使用位置是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
tf.keras.layers.Batchnormalization()
重要參數:
training
:布爾值,指示圖層應在訓練模式還是在推理模式下運行。
training=True
:該圖層將使用當前批輸入的均值和方差對其輸入進行標準化。
training=False
:該層將使用在訓練期間學習的移動統計數據的均值和方差來標準化其輸入。
BatchNormalization 廣泛用于 Keras 內置的許多高級卷積神經網絡架構,比如 ResNet50、Inception V3 和 Xception。
BatchNormalization 層通常在卷積層或密集連接層之后使用。
求每一個訓練批次數據的均值
求每一個訓練批次數據的方差
數據進行標準化
訓練參數γ,β
輸出y通過γ與β的線性變換得到原來的數值
在訓練的正向傳播中,不會改變當前輸出,只記錄下γ與β。在反向傳播的時候,根據求得的γ與β通過鏈式求導方式,求出學習速率以至改變權值。
對于預測階段時所使用的均值和方差,其實也是來源于訓練集。比如我們在模型訓練時我們就記錄下每個batch下的均值和方差,待訓練完畢后,我們求整個訓練樣本的均值和方差期望值,作為我們進行預測時進行BN的的均值和方差。
原始論文講在CNN中一般應作用與非線性激活函數之前,但是,實際上放在激活函數之后效果可能會更好。
# 放在非線性激活函數之前 model.add(tf.keras.layers.Conv2D(64, (3, 3))) model.add(tf.keras.layers.BatchNormalization()) model.add(tf.keras.layers.Activation('relu')) # 放在激活函數之后 model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu')) model.add(tf.keras.layers.BatchNormalization())
關于keras中的BatchNormalization使用,官方文檔說的足夠詳細。本文的目的旨在說明在BatchNormalization的使用過程中容易被忽略的細節。
在BatchNormalization的Arguments參數中有trainable屬性;以及在Call arguments參數中有training。兩個都是bool類型。第一次看到有兩個參數的時候,我有點懵,為什么需要兩個?
后來在查閱資料后發現了兩者的不同作用。
1,trainable是Argument參數,類似于c++中構造函數的參數一樣,是構建一個BatchNormalization層時就需要傳入的,至于它的作用在下面會講到。
2,training參數時Call argument(調用參數),是運行過程中需要傳入的,用來控制模型在那個模式(train還是interfere)下運行。關于這個參數,如果使用模型調用fit()的話,是可以不給的(官方推薦是不給),因為在fit()的時候,模型會自己根據相應的階段(是train階段還是inference階段)決定training值,這是由learning——phase機制實現的。
關于trainable=False:如果設置trainable=False,那么這一層的BatchNormalization層就會被凍結(freeze),它的trainable weights(可訓練參數)(就是gamma和beta)就不會被更新。
注意:freeze mode和inference mode是兩個概念。
但是,在BatchNormalization層中,如果把某一層BatchNormalization層設置為trainable=False,那么這一層BatchNormalization層將一inference mode運行,也就是說(meaning that it will use the moving mean and the moving variance to normalize the current batch, rather than using the mean and variance of the current batch).
到此,關于“批標準化層tf.keras.layers.Batchnormalization的使用位置是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。