[英]How to calculate batch normalization with python?
當我從 scrach 在 python 中實現批量標准化時,我很困惑。 請看一篇論文展示了一些關於歸一化方法的數字,我認為它可能不正確。 描述和圖都不正確。
論文中的描述:
論文中的圖: 就我而言,原始論文中批量歸一化的表示是不正確的。 我把這個問題貼在這里供討論。 我認為批量歸一化應該如下圖所示。
關鍵是如何計算均值和標准差。 特征圖的形狀為(batch_size, channel_number, width, height)
, mean = X.mean(axis=(0, 2, 3), keepdims=True)
or mean = X.mean(axis=(0, 1), keepdims=True)
哪一個是正確的?
您應該計算批次圖像中所有像素的均值和標准差。 所以使用 axis=(0, 2, 3) 參數。 如果通道具有大致相同的分布 - 您也可以跨通道計算均值和標准差。 所以只需使用沒有軸參數的 mean() 和 std() 。
文章中的數字是正確的 - 每個批次的 H 和 W(圖像尺寸)均采用均值和標准差。 顯然,通道未顯示在 3d 立方體中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.