首页 > 解决方案 > 如何用python计算批量标准化?

问题描述

当我从头开始在 python 中实现批量标准化时,我很困惑。请看一篇论文演示了一些关于规范化方法的数字,我认为它可能不正确。描述和图都不正确。

论文中的描述:

在此处输入图像描述

论文中的图: BN原图 就我而言,原始论文中批量标准化的表示是不正确的。我在这里发布这个问题以供讨论。我认为批量归一化应该如下图。

国阵

关键是如何计算平均值和标准差。特征图的形状为(batch_size, channel_number, width, height)mean = X.mean(axis=(0, 2, 3), keepdims=True)mean = X.mean(axis=(0, 1), keepdims=True)

哪一个是正确的?

标签: pythontensorflowdeep-learningbatch-normalization

解决方案


您应该计算批次图像中所有像素的均值和标准差。所以使用axis=(0, 2, 3) 参数。如果通道具有大致相同的分布 - 您也可以计算通道之间的均值和标准差。所以只需使用没有轴参数的 mean() 和 std() 。

文章中的数字是正确的 - 每个批次的 H 和 W(图像尺寸)均采用均值和标准值。显然,通道没有显示在 3d 立方体中。


推荐阅读