resnet解析

resnet

1.1 batch normalization原理

提出背景:在训练层数较深的神经网络时,参数的变化导致每一层的输入分布会发生变化,进而上层的网络需要不停地去适应这些分布变化,使得我们的模型训练变得困难——internal Covariate Shift

问题:上层网络需要不停调整来适应输入分布的变化,导致网络学习速度的降低;网络的训练过程容易陷入梯度饱和区,减缓网络收敛速度。

减缓internal covariate shift的方法:

  • 白化:对输入数据分布进行变换,具有相同的均值和方差;
  • batch normalization:由于白化过程计算成本太高,且改变了网络每一层的分布。

image-20220701153501142

image-20220701153552148

1.2 resnet 结构

image-20220701154852179

Stage 0

  • (3,224,224)指输入INPUT的通道数(channel)、高(height)和宽(width),即(C,H,W)。现假设输入的高度和宽度相等,所以用(C,W,W)表示。
  • 该stage中第1层包括3个先后操作
  1. CONV
    CONV是卷积(Convolution)的缩写,7×7指卷积核大小,64卷积核的数量(即该卷积层输出的通道数),/2指卷积核的步长为2。
  2. BN
    BN是Batch Normalization的缩写,即常说的BN层。
  3. 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)的输出。