1.对全连接层做批量归⼀化:
将批量归⼀化层置于全连接层中的仿射变换和激活函数之间。
2.对卷积层做批量归⼀化
- 批量归⼀化发⽣在卷积计算和激活函数之间。
- 如果卷积计算输出多个通道,我们需要对这些通道的输出分别做批量归⼀化,且每个通道都拥有独⽴的拉伸和偏移参数,并均为标量
net = nn.Sequential()
net.add(nn.Conv2D(6, kernel_size=5),
nn.BatchNorm(),
nn.Activation('sigmoid'),
nn.MaxPool2D(pool_size=2, strides=2),
nn.Conv2D(16, kernel_size=5),
nn.BatchNorm(),
nn.Activation('sigmoid'),
nn.MaxPool2D(pool_size=2, strides=2),
nn.Dense(120),
nn.BatchNorm(),
nn.Activation('sigmoid'),
nn.Dense(84),
nn.BatchNorm(),
nn.Activation('sigmoid'),
nn.Dense(10))
查看第一个批量归一化层学习到的拉伸参数gamma和偏移参数beta。
net[1].gamma.data().reshape((-1,)), net[1].beta.data().reshape((-1,))
- 在模型训练时,批量归一化利用小批量上的均值和标准差,不断调整神经网络的中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。
- 对全连接层和卷积层做批量归一化的方法稍有不同。
- 批量归一化层和丢弃层一样,在训练模式和预测模式的计算结果是不一样的。
-
batchnorm主要是让收敛变快,但对acc影响不大
网友评论