AlexNet网络是AlexNet在2012年ImageNet大赛上一举夺魁随后一炮而红,开启了深度学习时代的网络。Alexnet一共包含8个层,其中5个卷积层,3个全连接层,用softMAx实现1000类分类。
AlexNet网络结构图:
![](https://i-blog.csdnimg.cn/blog_migrate/c2632c8b3aa3ee6fda3de32adc0e7bdc.png)
这个图有点特殊的地方是:卷积部分都是画成上下两块,意思是说把这一层计算出来的feature map分开,但是前一层用到的数据要看连接的虚线,如图中input层之后的第一层第二层之间的虚线是分开的,是说二层上面的128map是由一层上面的48map计算的,下面同理;而第三层前面的虚线是完全交叉的,就是说每一个192map都是由前面的128+128=256map同时计算得到的。
Alexnet有一个特殊的计算层,LRN层(现在已经很少用了),做的事是对当前层的输出结果做平滑处理。下面是示意图:
AlexNet网络模型特性:
- 使用ReLU非线性函数作为激活函数,大大的加快了训练时间,并且这使得ReLU流行起来
- 在池化层采用了重叠采样的方法,有效的防止过拟合
-
引入新的Dropout方法,使Dropout的神经元不再进行前向传播并且不参与反向传播,减少网络训练代价。结果在各个数据集的结果在翻译中都有呈现
-
基于GPU跨GPU并行性好的特点,训练方式采用多GPU训练
AlexNet网络各个层的参数总图(来自网易云课堂吴恩达老师的课程截图):
![](https://i-blog.csdnimg.cn/blog_migrate/30d37f14d808d00e8ef32791d5fdefd4.png)
注:卷积核的厚度=被卷积的图像的通道数
卷积核的个数=卷积操作后输出的通道数
C1:使用96个的卷积核进行卷积核运算,卷积后生成
的像素层,该卷积核为
,步长4。经过ReLU层后像素层维度不发生改变,然后经过一个池化层(卷积核为
,步长为2),得到
的像素层。如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/53de9ca2dbdfb03baa36e60a3dbcbcd2.png)
C2流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/2f3b1f641f6e223a0b8100060edf65a2.png)
C3流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/441430509c551d20319ef01a6f3c26a1.png)
C4的流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/7bbf7f081fb44983b25e73ac4c403763.png)
C5流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/50139937cf0494f1d6e795b206fb8627.png)
fc6全连接流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/bf3562f515d551814a27b7254cca6779.png)
fc7全连接流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/da44e4c0f92135e7e1161136dcdb06f5.png)
fc8全连接流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/2d9c60884bdd041559efe8782628c9c5.png)
CNN中卷积层的作用
CNN中的卷积层,在很多网络结构中会用conv来表示,也就是convolution的缩写。卷积层在CNN中扮演着很重要的角色——特征的抽象和提取,这也是CNN区别于传统的ANN或SVM的重要不同,在传统机器学习算法中,需要人为的指定特征是什么,比如经典的HOG+SVM的行人检测方案,HOG就是一种特征提取方法。所以我们送入SVM分类器中的其实HOG提取出来的特征,而不是图片的本身。而在卷积神经网络中,大部分特征提取的工作在卷积层自动完成了,越深越宽的卷积层一般来说就会有更好的表达能力。
池化层
池化操作(Pooling)用于卷积操作之后,其作用在于特征融合和降维,其实也是一种类似卷积的操作,只是池化层的所有参数都是超参数,都是不用学习得到的。
最大池化示例图:
其中,核的尺寸为2×22×2,步长为2,最大池化的过程是将2×22×2尺寸内的所有像素值取最大值,作为输出通道的像素值。
激活层
池化操作用于卷积层内,而激活操作则在卷积层和全连接层都会用到,深层网络中一般使用ReLU多段线性函数作为激活函数,如下图所示,其作用在于增加非线性。
全连接层
全连接层的作用
CNN中的全连接层与浅层神经网络中的作用是一样的,负责逻辑推断,所有的参数都需要学习得到。有一点区别在于第一层的全连接层用于链接卷积层的输出,它还有一个作用是去除空间信息(通道数),是一种将三维矩阵变成向量的过程(一种全卷积操作),其操作如下:
输入图像是W×H×CW×H×C,那么卷积核的尺寸为W×H×CW×H×C,这样的话整个输入图像就变成了一个数,一共有k个数(第一层全连接层后的神经元个数),就有K个这样的W×H×CW×H×C的卷积核。