YJango的Batch Normalization介绍
- 数码产品
- 2025-07-01
- 7
- 更新:2025-07-01 21:03:58
做法
设,每个batch输入是
(其中每个
都是一个样本,
是
batch size) 假如在第一层后加入Batch normalization layer后,
的计算就倍替换为下图所示的那样。
- 矩阵
先经过
的线性变换后得到
注:因为减去batch的平均值
后,
的作用会被抵消掉,所以没必要加入
(红色删除线)。将
再减去batch的平均值
,并除以batch的标准差
得到
是为了避免除数为0的情况所使用的微小正数。
注:但
基本会被限制在正态分布下,使得网络的表达能力下降。为解决该问题,引入两个新的parameters:
和
,
和
是在训练时网络自己学习得到的。 - 将
乘以
调整数值大小,再加上
增加偏移后得到
- 为加入非线性能力,
也会跟随着ReLU等激活函数。 - 最终得到的
会被送到下一层作为输入。
需要注意的是,上述的计算方法用于在训练。因为测试时常会只预测一个新样本,也就是说batch size为1。若还用相同的方法计算
,
就会是这个新样本自身,
就会成为0。
所以在测试时,所使用的
和
是整个训练集的均值
和方差
。
而整个训练集的均值
和方差
的值通常也是在训练的同时用
移动平均法来计算。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 3561739510@qq.com 举报,一经查实,本站将立刻删除。!