深度学习-Tensorflow2.2-批标准化简介-14
生活随笔
收集整理的這篇文章主要介紹了
深度学习-Tensorflow2.2-批标准化简介-14
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是標準化
-
傳統機器學習中標準化也叫做歸一化,
- 一般是將數據映射到指定的范圍,用于去除不同維度數據的量綱以及量綱單位。
- 數據標準化讓機器學習模型看到的不同樣本彼此之間更加相似,這有助于模型的學習與對新數據的泛化
-
常見的數據標準化形式:
- 標準化和歸一化
- 將數據減去其平均值使其中心為 0,然后將數據除以其標準差使其標準差為 1。
- Batch Normalization, 批標準化, 和普通的數據標準化類似, 是將分散的數據統一的一種做法, 也是優化神經網絡的一種方法.
什么是批標準化
- 批標準化不僅在將數據輸入模型之前對數據做標準化。
- 在網絡的每一次變換之后都應該考慮數據標準化即使在訓練過程中均值和方差隨時間發生變化,它也可以適應性地將數據標準化
為什么要做批標準化
-
批標準化解決的問題是梯度消失與梯度爆炸。
-
批標準化一種訓練優化方法。
-
關于梯度消失,以sigmoid函數為例子,sigmoid函數使得輸出在[0,1]
之間。 。
-
如果輸入很大,其對應的斜率就很小,反向傳播梯度就很小,學習速率就很慢。
批標準化好處
- 我們知道數據預處理做標準化可以加速收斂,同理,在神經網絡使用標準化也可以加速收斂,而且還有更多好處
- 具有正則化的效果
- 提高模型的泛化能力
- 允許更高的學習速率從而加速收斂
- 批標準化有助于梯度傳播,因此允許更深的網絡。對于有些特別深的網絡,只有包含多個BatchNormalization 層時才能進行訓練。
- BatchNormalization 廣泛用于 Keras 內置的許多高級卷積神經網絡架構,比如ResNet50、Inception ,V3 和 Xception。
- Tf實現批標準化
BatchNormalization 層通常在卷積層或密集連接層之后使用。Tf.keras.layers.Batchnormalization()
批標準化的實現過程
- 1.求每一個訓練批次數據的均值
- 2.求每一個訓練批次數據的方差
- 3.數據進行標準化
- 4.訓練參數γ,β批標準化的實現過程
- 5.輸出y通過γ與β的線性變換得到原來的數值在訓練的正向傳播中,不會改變當前輸出,只記錄下γ與β。
- 在反向傳播的時候,根據求得的γ與β通過鏈式求導方式,求出學習速率以至改變權值。
批標準化的預測過程
- 對于預測階段時所使用的均值和方差,其實也是來源于訓練集。比如我們在模型訓練時我們就記錄下每個batch下的均值和方差,待訓練完畢后,我們求整個訓練樣本的均值和方差期望值,作為我們進行預測時進行BN的的均值和方差
批標準化的使用位置
- training:Python布爾值,指示圖層應在訓練模式還是在推理模式下運行。
- training=True:該圖層將使用當前批輸入的均值和方差對其輸入進行標準化。
- training=False:該層將使用在訓練期間學習的移動統計數據的均值和方差來標準化其輸入。
- 原始論文講在CNN中一般應作用與非線性激活函數之前,但是,實際上放在激活函數之后效果可能會更好。
總結
以上是生活随笔為你收集整理的深度学习-Tensorflow2.2-批标准化简介-14的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习-Tensorflow2.2-卷
- 下一篇: 深度学习-Tensorflow2.2-卷