【译】Understanding Batch Normalization with Examples in Numpy and Tensorflow with Interactive Code
因此,今天,我將探討批量標準化( 批量標準化: 通過 Sergey Ioffe 和 Christian Szegedy 減少內部協變量來加速深度網絡培訓 )。 但是,為了加強我對數據預處理的理解,我將覆蓋3個案例,
案例1 - 規范化 :整體數據(Numpy)
案例2 - 標準化 :整體數據(Numpy)
情況3 - 批量標準化 :微型批量(Numpy / Tensorflow)
**注**我不會在這篇文章中回顧傳播!
實驗設置
這個實驗的設置非常簡單。 要模擬真實世界的用例,可以從隨機正常分布中創建一個32 * 32圖像,并為其添加一些噪聲。 以上是我們的形象。 紅框 →(圖像數量,圖像寬度,圖像高度,通道數量)現在我們將使用32 * 32灰度圖像。
左圖 →我們圖像數據的直方圖
正如您在上面看到的,我們的圖像平均值為26,方差為306。左邊我們可以看到圖像數據的直方圖。
情況1:標準化 - 整體數據
對于我們的第一種情況,我們可以對整個數據集進行標準化。 從視覺上看,我們可以觀察到沒有區別。但是,一旦我們繪制直方圖或查看均值和標準差,我們可以清楚地看到我們的數據在0和1的范圍內。
案例2:標準化 - 整體數據
再一次,從視覺上看,我看不出有什么不同。
但是,當我們看到直方圖的軸時,我們可以清楚地看到,我們的數據的均值已經移到0(幾乎),方差是1。
標準化/標準化方程式
來自這個網站的圖片 左→方程式進行歸一化
右 →標準化等式
以防萬一,如果有人想知道,讓我們回顧一下正?;蜆藴驶那闆r。 請注意, μ是平均值, σ是標準偏差。
批量標準化等式
紅框→用于標準化的等式
藍線→要學習的參數
現在我們已經涉及了規范化和標準化,我們可以看到批量規范化的公式與標準化的過程完全相同。 唯一的區別是gamma和beta術語,用藍色下劃線。 我們可以將這些術語看作完全像權重,我們將根據地面實況數據計算誤差,并使用反向傳播學習這些參數。
但有一件事我想注意! 如果我們設置伽瑪(謝謝 洛陽方 糾正我 ) 為1,貝塔值為0,那么整個過程就是標準化。 而對于Tensorflow的實施,我們將濫用這個屬性。
案例3:批量標準化 - 純粹實施
紅線 →迷你批次,從我們的圖像數據的前10個圖像
藍框 →數據標準化
這里有一點需要注意,對于批量標準化,我們將從我們的測試數據中獲取前10個圖像并應用批量標準化。
再次,我們可以看到平均值在0左右,方差為1.現在讓我們來看看張量流的實現。
情況3:批量標準化 - Tensorflow
紅線 →迷你批次,從我們的圖像數據的前10個圖像
藍線→偏移(Beta)為0,縮放(Gamma)為1
再一次,在視覺上,我們看不出任何區別。
但是,如果我們看一下數據的均值和方差,我們可以看到它與應用標準化完全相同 。
交互式代碼(Google Collab / Replit / Microsoft Azure Notebook)
對于Google Colab,您需要一個Google帳戶才能查看代碼,并且您無法在Google Colab中運行只讀腳本,因此請在游戲場地上制作副本。 最后,我絕不會要求獲得在Google云端硬盤上訪問您的文件的權限,僅供參考。 快樂編碼!
要訪問Google Colab上的代碼, 請點擊此處 。
要訪問Repl上的代碼, 請點擊此處 。
要訪問Microsoft Azure Notebook上的代碼, 請點擊此處 。
最后的話
最近Face book AI研究小組正式發布。 ( 由 吳宇欣 和 何凱明 組織的標準化 )我會盡力掩蓋這一點。
如果發現任何錯誤,請發送電子郵件至jae.duk.seo@gmail.com,如果您希望查看我所有寫作的列表,請在此處查看我的網站 。
同時在我的twitter上跟隨我,訪問我的網站或我的Youtube頻道獲取更多內容。 如果您有興趣,我也在這里比較了解耦神經網絡。
參考
總結
以上是生活随笔為你收集整理的【译】Understanding Batch Normalization with Examples in Numpy and Tensorflow with Interactive Code的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【译】10 years Blockcha
- 下一篇: 【译】How I hacked Goog