14 批量归一化

批量归一化利用了小批量的平均值和方差,调整神经网络的中间输出。改善了因模型参数的更新造成的输出层输出的剧烈变化。

对全连接层做批量归一化

批量归一化层的输入是全连接层的输出,批量归一化层的输出是激活函数的输入。

对一批小批量做归一化,目标维度是批次,即求出的均值的形状是一个样本的形状,对每一个样本做标准化后得到的也是一个样本的形状。

在这里插入图片描述

引入可学习参数γ和β,与样本形状相同,分别与样本做按元素乘法和加法计算。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bEjEjukg-1629959554555)(https://i.loli.net/2021/08/18/JEbj1xkDM6hNCyc.png)]

最终得到了批量归一化层的输出yi

在学习过程中,也存在批量归一化层不对样本造成任何变化的可能,即若样本经过批量归一化没有意义,可学习参数γ和β可令输出等于输入

对卷积层做批量归一化

同样,批量归一化层在卷积层后,激活函数前。

对卷积层的每个通道都做一次批量归一化,每个通道各自拥有可学习参数γ和β

批量归一化在训练和预测时的不同之处

训练时,可以将批量设置大一点,使得样本的均值和方差计算准确。

预测时,不适用训练时计算均值和方差的方法,使用移动平均估算整个训练数据样本均值和方差。

移动平均法能有效地消除预测中的随机波动

#对全连接层批量归一化时
#dim0是批量方向
mean = X.mean(dim=0)
var = ((X - mean) ** 2).mean(dim=0)
#对卷积层批量归一化时
#dim0是批量方向,dim1是通道方向,dim23是样本高宽,对0,2,3方向求平均,求得每个通道的均值
mean = X.mean(dim=0, keepdim=True).mean(dim=2, keepdim=True).mean(dim=3, keepdim=True)
var = ((X - mean) ** 2).mean(dim=0, keepdim=True).mean(dim=2, keepdim=True).mean(dim=3, keepdim=True)

dim=True).mean(dim=3, keepdim=True)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值