resnet解析
resnet
1.1 batch normalization原理
提出背景:在训练层数较深的神经网络时,参数的变化导致每一层的输入分布会发生变化,进而上层的网络需要不停地去适应这些分布变化,使得我们的模型训练变得困难——internal Covariate Shift
问题:上层网络需要不停调整来适应输入分布的变化,导致网络学习速度的降低;网络的训练过程容易陷入梯度饱和区,减缓网络收敛速度。
减缓internal covariate shift的方法:
- 白化:对输入数据分布进行变换,具有相同的均值和方差;
- batch normalization:由于白化过程计算成本太高,且改变了网络每一层的分布。
1.2 resnet 结构
Stage 0
(3,224,224)
指输入INPUT
的通道数(channel)、高(height)和宽(width),即(C,H,W)
。现假设输入的高度和宽度相等,所以用(C,W,W)
表示。- 该stage中第1层包括3个先后操作
CONV
CONV
是卷积(Convolution)的缩写,7×7
指卷积核大小,64
指卷积核的数量(即该卷积层输出的通道数),/2
指卷积核的步长为2。BN
BN
是Batch Normalization的缩写,即常说的BN层。RELU
RELU
指ReLU激活函数。
该stage中第2层为
MAXPOOL
,即最大池化层,其kernel大小为3×3
、步长为2
。(64,56,56)
是该stage输出的通道数(channel)、高(height)和宽(width),其中64
等于该stage第1层卷积层中卷积核的数量,56
等于224/2/2
(步长为2会使输入尺寸减半)。
总体来讲,在Stage 0中,形状为(3,224,224)
的输入先后经过卷积层、BN层、ReLU激活函数、MaxPooling层得到了形状为(64,56,56)
的输出。