python - 如何用python计算批量标准化?
问题描述
当我从头开始在 python 中实现批量标准化时,我很困惑。请看一篇论文演示了一些关于规范化方法的数字,我认为它可能不正确。描述和图都不正确。
论文中的描述:
论文中的图: 就我而言,原始论文中批量标准化的表示是不正确的。我在这里发布这个问题以供讨论。我认为批量归一化应该如下图。
关键是如何计算平均值和标准差。特征图的形状为(batch_size, channel_number, width, height)
,
mean = X.mean(axis=(0, 2, 3), keepdims=True)
或
mean = X.mean(axis=(0, 1), keepdims=True)
哪一个是正确的?
解决方案
您应该计算批次图像中所有像素的均值和标准差。所以使用axis=(0, 2, 3) 参数。如果通道具有大致相同的分布 - 您也可以计算通道之间的均值和标准差。所以只需使用没有轴参数的 mean() 和 std() 。
文章中的数字是正确的 - 每个批次的 H 和 W(图像尺寸)均采用均值和标准值。显然,通道没有显示在 3d 立方体中。
推荐阅读
- python - 仅使用 python 从 API 中获取新数据
- time-complexity - 生成所有可能的拓扑类型的图的时间复杂度
- json - Dart颤动FormatException:无效的Unicode转义
- javascript - 以模态响应路由器刷新
- javascript - 如何在不损失图像质量的情况下调整图像大小以适合小型 HTML5 画布?
- javascript - 如何使用链接中的关键字在我的数据库中查找产品?(mongodb,快递)
- android - 如何显示自定义菜单标题?
- javascript - 获取 http://localhost:8000/Stack/script.js net:: Err_Aborted 404 / Django 项目
- flutter - 如何使用锐化滤镜进行颤振摄影?
- android - 在android studio中制作音板,但应用程序不断崩溃