【问题标题】:Calculation detail of Batch NormalizationBatch Normalization的计算细节
【发布时间】:2020-05-19 21:36:01
【问题描述】:

我正在使用 C++ 在我的 CNN 模型中实现 BN 算法。但我很困惑,因为它计算平均值和标准差。让我们看看下面的图片。

据我所知,必须计算每个像素的平均值。但我不知道哪个方程是正确的。

假设 BN 的输入是 [B, H, W],其中 B 是批量大小,(H, W) 是特征图大小(假设为 [3,2,2])。

  1. 一幅图像中所有像素的平均值

    ([0,0,0]+[0,0,1]+[0,1,0]+[0,1,1])/4

小批量均值是标量

  1. 多幅图像中同一位置像素的平均值(图像数 = 批次数)

    ([0,0,0]+[1,0,0]+[2,0,0])/3 , ([0,0,1]+[1,0,1]+[2,0,1])/3 , ([0,1,0]+[1,1,0]+[2,1,0])/3 , ([0,1,1]+[1,1,1]+[2,1,1])/3 )

小批量的意思是一个数组

什么计算是对的?

【问题讨论】:

    标签: neural-network artificial-intelligence normalization batch-normalization


    【解决方案1】:

    两者都不正确。方法1只是对每张图像进行归一化;它与整个批次无关。方法 2 几乎肯定会损害您的训练,因为它会使相邻像素彼此分离。

    您需要计算批次中所有个像素的均值和方差。然后使用这些批处理统计信息,使用scale and shift 方程对每个像素进行归一化。

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 1970-01-01
      • 2017-10-25
      • 2021-09-07
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      相关资源
      最近更新 更多