16.批标准化

目录

1  理论

1.1  从前定义的标准化

1.2  现在定义的标准化与批标准化

1.3  批标准化的好处

1.4  批标准化在代码中的使用方式

1.5  批标准化的执行过程

1.5.1  训练中的执行过程

1.5.2  预测中的执行过程

1.6  批标准化的参数

2  代码实现


1  理论

1.1  从前定义的标准化

我们先说什么是标准化,在传统机器学习中标准化也叫归一化,是将一组数据映射到某一范围的过程,这一步的目的是去除不同数据取值范围的影响,比如有的数据取值范围[0,9],这个时候我们除9就是对其进行归一化,有的数据取值范围[0,255],这个时候我们除255就是对其进行归一化

1.2  现在定义的标准化与批标准化

那么在现在的定义中,归一化与标准化产生了区别,标准化的运算方法是对所有值减均值,然后除方差,归一化的运算方法就是上面提到的运算方法

之后我们再说批标准化,批标准化不仅对输入前的数据做标准化,而且还在每一次变化后(比如卷积)再次进行标准化

批标准化解决了梯度消失与梯度爆炸的问题,本质上是一种优化方法

  • 梯度消失:梯度过小
  • 梯度爆炸:梯度过大

1.3  批标准化的好处

批标准化有这样几个好处

16.批标准化_第1张图片

有了上面这三个好处,我们的神经网络的深度就可以更深,有些公认效果好的网络(如Resnet50)就使用了批标准化的方法

1.4  批标准化在代码中的使用方式

在代码中这样使用,它是神经网络中的一层

1.5  批标准化的执行过程

1.5.1  训练中的执行过程

批标准化的实现过程是这样的

16.批标准化_第2张图片

16.批标准化_第3张图片

1.5.2  预测中的执行过程

16.批标准化_第4张图片

1.6  批标准化的参数

  • training

16.批标准化_第5张图片

训练模式用True,预测模式用False

2  代码实现

我们使用之前卫星图片分类的训练代码,在其中加入批标准化(BN)层

我们有两种添加方式,一种在激活之前加

另一种在激活之后加

下面这个是我们上次的summary,批标准化层可以在有训练参数的地方添加,不能在没有训练参数的地方添加,最后的输出层最好也不要添加

16.批标准化_第6张图片

上一次的模型结果已经很好了,在这里就不训练了

你可能感兴趣的