Fork me on GitHub
0%

深度学习4-典型的CNN

AlexNet

  • 采用ReLU激活函数
  • 输入尺寸固定256 * 256 ,论文处理为把长边缩放成256 然后进行256的中心裁剪
  • 多GPU训练
    • 如:一个conv层要生成96个通道,可以用两个GPU分别生成48通道,提高速度
  • 通道交叉
  • 局部响应归一化层(Local Response Normalization), 后多采用批量归一化
  • 重叠池化:相邻池化窗口之间有重叠部分

VGG16

  • 都采用3 * 3 (代替5 * 5),效果一致,还可降低参数数目和计算量

    堆叠含有小尺寸卷积核的卷积层来代替具有大尺寸的卷积核的卷积层,并且能够使得感受野大小不变,而且多个3x3的卷积核比一个大尺寸卷积核有更多的非线性(每个堆叠的卷积层中都包含激活函数),使得decision function更加具有判别性。

    • 5 * 5的卷积核对其卷积,步长为1,得到的结果 (32-5)/1+1=28

    • 第一层3 * 3:得到的结果是(32-3)/1+1=30

      第二层3 * 3:得到的结果是(30-3)/1+1=28

    • 一个5 * 5的参数量为 (5x5+output_channels(其实是偏置数量))x output_channels ;
      两个3 * 3的参数量为(3x3+output_channels) x output_channels*2 ;

    • 一个5 * 5的计算量为 (5x5) x ouput_channels x output_height x output_width

      两个3 * 3的计算量为 (3x3)x output_channels x output_height x output_height x 2

    2个33等于一个55,同理3个33等于一个77

  • 卷积组(卷积+卷积+池化或者 卷积+卷积+卷积+池化)

GoogleNet

  • 组成卷积模块(Inception Module),module之间级联

    • 模块内通过做不同次数和大小的卷积可以在模块内获得不同的深浅信息
    • 在不同模块处理后输出
  • 使用1 * 1卷积,减少权重数量,增加通道数,减少计算量。使得网络虽然变深,但参数和计算量并没有增长过快

    假设输入28 * 28 * 192,输出为28 * 28 * 32

    1. 使用32个5 * 5 * 192的卷积核卷积

    2. 先使用16个1 * 1卷积核对输入卷积,输出28 * 28 * 16,然后再用32个5 * 5 * 16进行卷积,输出28 * 28 * 32

    • 直接5 * 5参数量为5 * 5 * 192 * 32,计算量为 5 * 5 * 192 * 28 * 28 * 32
    • 先1 * 1后5 * 5 参数量为 1 * 1 * 192 * 16 + 5 * 5 * 16 * 32,计算量为 1 * 1 * 192 * 28 *28 * 16 + 5 * 5 * 16 * 28 * 28 * 32

ResNet(18,34,50,152)

  • 残差块(圆圈+号为通道的连接)

DenseNet

觉得有帮助的请作者喝杯咖啡吧~