关于经典的神经网络分析
前言
本篇文章主要对一些经典的神经网络进行分析。大致分为:AlexNet,ZFNet,VGG,GoogleNet和ResNet。当然,还存在着很多新类型的优秀的网络,但由于ResNet的视觉识别能力已经在ILSVRC(ImageNet大规模视觉识别挑战赛)当中超过了人类的识别能力,因此我们就先不再继续往下面分析。
AlexNet
AlexNet的网络结构
AlexNet主要由8层全连接神经网络构成。包括5层卷积层和3层全连接层构成。
第一层卷积层
卷积层:输入图像尺寸为227×227×3大小,经过96个11×11×3的卷积核,padding=0,stride=4,输出尺寸为(227-11)/4+1=55,因此输出图像尺寸为55×55×96。
池化层:采用maxpooling的方式,其中池化核的大小为3×3,padding=0,stride=2,输出尺寸为(55-3)/2+1=27,因此输出图像尺寸为27×27×3。
NORM1:局部归一化层,其作用为:对局部神经元的活动创建竞争机制;响应比较大的值变得相对更大;抑制其他反馈较小的神经元;增强模型的泛化能力。(后来研究表明:更深的网络中该层对分类的效果并不显著,还会增加计算量和存储空间)
第二层卷积层
卷积层:输入的图像尺寸为27×27×256大小,经过256个5×5的卷积核,padding=2,stride=1,输出尺寸为(27-5+2*2)/1+1=27,因此输出图像尺寸为27×27×256。
池化层:与第一层卷积层一致,最终输出的特征图尺寸为13×13×256
NORM2:与第一层卷积层一致。
第三、四层卷积层
卷积层:最终保证输出图像的尺寸大小为13×13×384.
该两层没有池化层和局部归一化层!
第五层卷积层
卷积层:输入图像尺寸为13×13×384大小,经过256个3×3卷积核,stride=1,padding=1,输出特征尺寸为13×13×256
池化层:池化核大小为3×3,padding=0,stride=2,输出的特征图尺寸为6×6×256.
第六、七、八层
全连接神经网络分类器,输入maxpooling传入的特征响应图组,输出图像类别概率。
采用Dropout策略防止过拟合
使用加入动量的随机梯度算法,加快收敛效率
AlexNet的突破
1.RELU激活函数的引用
2.层叠池化操作:可以简单理解为在池化过程中,池化核经过了很多有重复的地方,这样可以防止过拟合情况的产生。
3.引入dropout操作:dropout局部失活用来预防过拟合现象的产生,减少了复杂的神经元之间的相互影响。
4.网络层数的叠加。
pytorch实现实例
该实例来自于《动手学深度学习pytorch版》
import time |
ZFNet
ZFNet网络结构
ZFNet与AlexNet的网络结构基本一致,但是它存在一些改进措施:
1.将第一个卷积层的卷积核大小改成了7×7,防止丢失掉过多的细节信息
2.将第二、三个卷积层的卷积步长都设置成了2,防止图片缩小过快,导致丢失特征
3.增加了第三、第四个卷积层的卷积核个数
VGG
VGG网络结构
VGG网络分类为VGG16和VGG19,但是VGG19所需要的内存更多,所以我们以VGG16为例。
VGG16包括13个卷积层和3个全连接层
卷积层
13个卷积层分成了5段,每一段中卷积层的卷积核个数均是相同的,为3×3尺寸。
多个小卷积核串联有什么优势?答案在于,多个小尺寸卷积核串联可以得到与大尺寸卷积核相同的感受野。同时需要运行的参数数量还会减少。、