深度网络设计思路

1. 对于给定的感受野,采用堆积的小卷积核优于采用大的卷积核

参考:https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter05_CNN/5.7_vgg

深度网络设计思路_第1张图片

VGG这种高和宽减半以及通道翻倍的设计使得多数卷积层都有相同的模型参数尺寸和计算复杂度。

VGG-11通过5个可以重复使用的卷积块来构造网络。根据每块里卷积层个数和输出通道数的不同可以定义出不同的VGG模型。

2. 1×1卷积层控制通道数、卷积层代替全连接层

LeNet、AlexNet和VGG在设计上的共同之处是:先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。其中,AlexNet和VGG对LeNet的改进主要在于如何对这两个模块加宽(增加通道数)和加深。而网络中的网络(NiN),它提出了另外一个思路,即串联多个由卷积层和“全连接”层构成的小网络来构建一个深层网络。

参考:https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter05_CNN/5.8_nin

           https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter05_CNN/5.3_channels

假设将通道维当作特征维,将高和宽维度上的元素当成数据样本,那么1×1×1卷积层的作用与全连接层等价。

NiN重复使用由卷积层和代替全连接层的1×1卷积层构成的NiN块来构建深层网络

NiN去除了容易造成过拟合的全连接输出层,而是将其替换成输出通道数等于标签类别数的NiN块和全局平均池化层。

NiN的以上设计思想影响了后面一系列卷积神经网络的设计

1×1卷积层通常用来调整网络层之间的通道数,并控制模型复杂度。

3. Inception模块

  • Inception块相当于一个有4条线路的子网络。它通过不同窗口形状的卷积层和最大池化层来并行抽取信息,并使用1×1卷积层减少通道数从而降低模型复杂度。
  • GoogLeNet将多个设计精细的Inception块和其他层串联起来。其中Inception块的通道数分配之比是在ImageNet数据集上通过大量的实验得来的。

4. 批量归一化

参考:https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter05_CNN/5.10_batch-norm

  • 在模型训练时,批量归一化利用小批量上的均值和标准差,不断调整神经网络的中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。
  • 对全连接层和卷积层做批量归一化的方法稍有不同。
  • 批量归一化层和丢弃层一样,在训练模式和预测模式的计算结果是不一样的。

 

你可能感兴趣的:(深度网络设计思路)