浅述经典的4种卷积网络之(1)AlexNet

来源:互联网 发布:resellerclub域名 编辑:程序博客网 时间:2024/05/20 17:09

这里不对AlexNet网络进行详细的原理阐述,只是卷积网络的由来以及网络结构和网络参数进行叙述,然后通过tensorflow进行代码实现,参看《tensorflow实战》。
1.AlexNet网络叙述
获得2012年ILSVRC比赛分类项目的冠军,top-5错误率16.4%,使用额外数据可达到15.3%2012年Hinton的学生Alex Krizhevsky提出了深度卷积神经网络模型AlexNet,是LeNet的更深更宽版本。包含了6亿3000万个连接,6000个参数和65万个神经元,8层神经网络(不包括池化和LRN),其中有5个卷积层,其中三个卷积层后面连接了最大池化层,最后还有3个全连接层。最后一层是有1000类输出的softmax层用作分类,LRN出现在第一个和第二个卷积层后,而最大池化层出现在两个LRN和最后一个卷积层后,ReLU则应用在这8个层每一层的后面,AlexNet训练时使用2个GPU,故结构图部分被拆为2个部分。

图1 AlexNet网络结构图
如图1所示,我们可以分析网络经过卷积和池化之后的参数数量:

layer input size filter size filter number output size strides pooling type conv1 224*224*3 11*11*3 96 55*55*96 4 valid LRN1 max pooling1 55*55*96 3*3 96 27*27*96 2 valid conv2 27*27*96 5*5*96 256 27*27*256 1 same LRN2 max pooling2 27*27*256 3*3 256 13*13*256 2 valid conv3 13*13*256 3*3*256 384 13*13*384 1 same conv4 13*13*384 3*3*384 384 13*13*384 1 same conv5 13*13*384 3*3*384 256 13*13*256 1 same max pooling3 13*13*256 3*3 256 6*6*256 2 valid FC1 6*6*256 4096 FC2 4096 4096 FC3 4096 1000

AlexNet首次在CNN中成功应用了ReLU、Dropout和LRN等Trick,AlexNet包含了几个新的技术点如下:
①成功使用ReLU作为CNN的激活函数,验证其在深层网络上超过sigmoid函数,成功解决了sigmoid在网路较深时的梯度弥散问题。
②训练时采用dropout随机忽略一部分神经元,以避免过拟合。在AlexNet里面将最后几个全连接层使用了dropout。
③在CNN中使用重叠的最大池化层。此前CNN一般使用平均池化,AlexNet避免了平均池化带来的模糊效果,并且提出了让步长比池化尺寸小,这样池化的输出之间会有覆盖和重叠,提升了特征的丰富性。
④提出了LRN层,对局部神经元的活动创建竞争机制,使得响应较大的值变得相对更大,并抑制其他反馈小的神经元,增强了模型泛化能力。
⑤使用CUDA加速深度网路的训练,利用GPU强大的计算能力,处理神经网络训练时大量的矩阵运算。
⑥数据增强,随机从256*256的原始图像中截取224*224大小的区域(以及水平翻转的镜像),相当于增加了(256-224)^2*2=2048倍的数据量。减轻过拟合,增强泛化能力。进行预测时,取图片的四个角和中间并进行左右翻转,总共获取10张图片进行识别,最后对十次结果求平均值。同时,AlexNet提到对rgb图像进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,这个trick可以下降1%错误率。
2.AlexNet网络tensorflow实现

啦啦啦~后续待进啦啦啦~

阅读全文
0 0
原创粉丝点击