Pytorch BatchNorm

Pytorch BatchNormal

BatchNormal使用原理

在这里插入图片描述
sigmoid函数一般会在(-4-4)的范围内,有较大变动,当超出了以后就不能很好显示,这是使用BatchNorm,将数据映射以0为均值,到(-1,1)范围内,以便于计算

在这里插入图片描述
当采用梯度下降时,如果由w2方向下降,很容易进行变换,但是当w1方向时,很难变换,此时可以使用batchnormal达到右图效果,这样任何方向内,梯度下降的效果都相同
在这里插入图片描述

代码实现

Image Normalization

在这里插入图片描述
eg:
在这里插入图片描述
将R,G,B三个求出均值std,然后使用noralization,使数据分布更加均匀,以便于找到最优解

Batch Normalization

四种Batch Normalization
在这里插入图片描述

eg:

Batch Norm

在这里插入图片描述
数据的结构:[N,C,HW]

N:图片数量 C:RGB,三种色彩 HW:像素点

对N方向(eg:6张图片),采集6张图片的784个图片像素点,求一个均值,生成维度为3的一个batch

Layer Norm

统计当前图片的数据的C和HW整体均值

Insatnce Norm

统计当前图片,当前色彩RGB下的一个像素点HW均值

处理过程

在这里插入图片描述
在这里插入图片描述
方差
在这里插入图片描述
统计数据
在这里插入图片描述
处理结果会更加接近N(0,1)的正态分布

在这里插入图片描述
这两个参数需要学习得到

代码实现

在这里插入图片描述
数据集为[100,16,784] 100个图片,16个经历过池化层的数据,784的像素

统计16个batch的batchnormal

正式写法

在这里插入图片描述

BatchNorm2d

在这里插入图片描述

全局打印

在这里插入图片描述

处理结果

在这里插入图片描述

更加便于训练,拟合训练曲线效果更好,拟合速度更快

更加容易搜索到最优解,梯度信息更加明显,参数调整更加方便

猜你喜欢

转载自blog.csdn.net/InkBamboo920/article/details/102784991