AlexNet 网络结构

AlexNet 网络

AlexNet由输入层,5个卷积层,3个全连接层组成(其中最后一个全连接层也是softmax输出层)。网络是分布在2个GPU上的,部分层只跟同一个GPU中的上一层连接。其网络结构如下:
在这里插入图片描述
一.卷积层1:

在这里插入图片描述
第一层输入数据为原始的227* 227* 3的图像(输入图像的尺寸是224* 224,在进行第一次卷积的时候会padding 3个像素变成227* 227),这个图像被11* 11* 3的卷积核进行卷积运算,卷积核对原始图像的每次卷积都生成一个新的像素。卷积核沿原始图像的x轴方向和y轴方向两个方向移动,移动的步长是4个像素。因此,卷积核在移动的过程中会生成(227-11)/4+1=55个像素(227个像素减去11,正好是54,即生成54个像素,再加上被减去的11也对应生成一个像素),行和列的55*55个像素形成对原始图像卷积之后的像素层。共有96个卷积核,会生成55*55*96个卷积后的像素层,96个卷积核分成2组,每组48个卷积核。对应生成2组55* 55* 48的卷积后的像素层数据。这些像素层经过relu1单元的处理,生成激活像素层,尺寸仍为2组55* 55* 48的像素层数据。

这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3*3,运算的步长为2,则池化后图像的尺寸为(55-3)/2+1=27。 即池化后像素的规模为27*27*96;然后经过归一化处理,归一化运算的尺度为5*5;第一卷积层运算结束后形成的像素层的规模为27*27*96。分别对应96个卷积核所运算形成。这96层像素层分为2组,每组48个像素层,每组在一个独立的GPU上进行运算。

二.卷积层2:

在这里插入图片描述
第二层输入数据为第一层输出的27*27*96的像素层,为便于后续处理,每幅像素层的左右两边和上下两边都要填充2个像素;27*27*96的像素数据分成27*27*48的两组像素数据,两组数据分别再两个不同的GPU中进行运算。每组像素数据被5*5*48的卷积核进行卷积运算,卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿原始图像的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,卷积核在移动的过程中会生成(27-5+2*2)/1+1=27个像素。(27个像素减去5,正好是22,在加上上下、左右各填充的2个像素,即生成26个像素,再加上被减去的5也对应生成一个像素),行和列的27*27个像素形成对原始图像卷积之后的像素层。共有256个5*5*48卷积核;这256个卷积核分成两组,每组针对一个GPU中的27*27*48的像素进行卷积运算。会生成两组27*27*128个卷积后的像素层。这些像素层经过relu2单元的处理,生成激活像素层,尺寸仍为两组27*27*128的像素层。

这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3*3,运算的步长为2,则池化后图像的尺寸为(57-3)/2+1=13。 即池化后像素的规模为2组13*13*128的像素层;然后经过归一化处理,归一化运算的尺度为5*5;第二卷积层运算结束后形成的像素层的规模为2组13*13*128的像素层。分别对应2组128个卷积核所运算形成。每组在一个GPU上进行运算。即共256个卷积核,共2个GPU进行运算。

三.卷积层3:

在这里插入图片描述

第三层输入数据为第二层输出的2组13*13*128的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有192个卷积核,每个卷积核的尺寸是3*3*256。因此,每个GPU中的卷积核都能对2组13*13*128的像素层的所有数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1*2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13*13*192个卷积核。2个GPU中共13*13*384个卷积后的像素层。这些像素层经过relu3单元的处理,生成激活像素层,尺寸仍为2组13*13*192像素层,共13*13*384个像素层。

四.卷积层4:

在这里插入图片描述
第四层输入数据为第三层输出的2组13*13*192的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有192个卷积核,每个卷积核的尺寸是3*3*192。因此,每个GPU中的卷积核能对1组13*13*192的像素层的数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1*2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13*13*192个卷积核。2个GPU中共13*13*384个卷积后的像素层。这些像素层经过relu4单元的处理,生成激活像素层,尺寸仍为2组13*13*192像素层,共13*13*384个像素层。

五.卷积层5:

在这里插入图片描述

第五层输入数据为第四层输出的2组13*13*192的像素层;为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有128个卷积核,每个卷积核的尺寸是3*3*192。因此,每个GPU中的卷积核能对1组13*13*192的像素层的数据进行卷积运算。卷积核对每组数据的每次卷积都生成一个新的像素。卷积核沿像素层数据的x轴方向和y轴方向两个方向移动,移动的步长是1个像素。因此,运算后的卷积核的尺寸为(13-3+1*2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13*13*128个卷积核。2个GPU中共13*13*256个卷积后的像素层。这些像素层经过relu5单元的处理,生成激活像素层,尺寸仍为2组13*13*128像素层,共13*13*256个像素层。

2组13*13*128像素层分别在2个不同GPU中进行池化(pool)运算处理。池化运算的尺度为3*3,运算的步长为2,则池化后图像的尺寸为(13-3)/2+1=6。 即池化后像素的规模为两组6*6*128的像素层数据,共6*6*256规模的像素层数据。

六.全连接层6:

在这里插入图片描述

第六层输入数据的尺寸是6*6*256,采用6*6*256尺寸的滤波器对第六层的输入数据进行卷积运算;每个6*6*256尺寸的滤波器对第六层的输入数据进行卷积运算生成一个运算结果,通过一个神经元输出这个运算结果;共有4096个6*6*256尺寸的滤波器对输入数据进行卷积运算,通过4096个神经元输出运算结果;这4096个运算结果通过relu激活函数生成4096个值;并通过drop运算后输出4096个本层的输出结果值。

由于第六层的运算过程中,采用的滤波器的尺寸(6*6*256)与待处理的feature map的尺寸(6*6*256)相同,即滤波器中的每个系数只与feature map中的一个像素值相乘;而其它卷积层中,每个滤波器的系数都会与多个feature map中像素值相乘;因此,将第六层称为全连接层。

第五层输出的6*6*256规模的像素层数据与第六层的4096个神经元进行全连接,然后经由relu6进行处理后生成4096个数据,再经过dropout6处理后输出4096个数据。

七.全连接层7:

在这里插入图片描述
第六层输出的4096个数据与第七层的4096个神经元进行全连接,然后经由relu7进行处理后生成4096个数据,再经过dropout7处理后输出4096个数据。

八.全连接层8:

在这里插入图片描述
第七层输出的4096个数据与第八层的1000个神经元进行全连接,经过训练后输出被训练的数值。

在这里插入图片描述

AlexNet特点:

  • 使用ReLU激活函数
    在过去,神经网络的激活函数通常是sigmoid或者tanh函数,这两种函数最大的缺点就是其饱和性,当输入的x过大或过小时,函数的输出会非常接近+1与-1,在这里斜率会非常小,那么在训练时引用梯度下降时,其饱和性会使梯度非常小,严重降低了网络的训练速度。 而ReLU的函数表达式为max(0, x),当x>0时输出为x,斜率恒为1,在实际使用时,神经网络的收敛速度要快过传统的激活函数数十倍。

  • 利用多个GPU进行分布式计算

  • Local response normalization(局部响应归一化)
    一般会在卷积层之后直接加上一个池化操作,但是AlexNet在卷积层和池化层之间加入了一个LRN层。Alex等人发现通过LRN这种归一化方式可以帮助提高网络的泛化性能。LRN的公式如下:
    在这里插入图片描述
    • bix,y,是归一化后的值,i是通道的位置,代表更新第几个通道的值,x与y代表待更新像素的位置。
    • aix,y是输入值,是激活函数Relu的输出值,N是卷积核的个数。
    • k、alpha、beta、n/2 都是自定义系数,可以先不用理会有什么用

LRN的作用就是,对位置(x, y)处的像素计算其与几个相邻的特征图的像素值的和,并除以这个和来归一化。特征图的顺序可以是任意的,在训练开始前确定顺序即可。其中的k, N, α, β都是超参数,论文中给出了所用的值为k=2, n=5, α=10e-4, β=0.75。在AlexNet中,LRN层位于ReLU之后。在论文中,Alex指出应用LRN后top-1与top-5错误率分别提升了1.4%与1.2%。

Hinton等人认为LRN层模仿生物神经系统的侧抑制机制,对局部神经元的活动创建竞争机制,使得响应比较大的值相对更大,并抑制其他响应较小的神经元,提高模型泛化能力。但是,后来的论文比如《Very Deep Convolution Networks for Large-Scale Image Recognition》(也就是提出VGG网络的文章)中证明,LRN对CNN并没有什么作用,反而增加了计算复杂度,因此,这一技术也不再使用了。

  • Overlapping pooling
    池化层是CNN中非常重要的一层,可以起到提取主要特征,减少特征图尺寸的作用,对加速CNN计算非常重要,然而通常池化的大小与步进被设置为相同的大小,当池化的大小大于步进时,就成为了overlapping pooling,这也是AlexNet中使用的池化技术。论文中提到,使用这种池化可以一定程度上减小过拟合现象。

  • Reducing Overfitting 减少过拟合
    AlexNet中有六千万个参数,也非常容易产生过拟合现象,而AlexNet中采用了两种方式来对抗过拟合。
    1) 对抗过拟合最简单有效的办法就是扩大训练集的大小
    训练时,对原始的256x256大小的图片随机裁剪为224x224大小,并进行随机翻转,这两种操作相当于增加了样本的数量。在测试时,AlexNet把输入图片与其水平翻转在四个角处与正中心共五个地方各裁剪下224x224大小的子图,即共裁剪出10个子图,均送入AlexNet中,并把10个softmax输出求平均,这个均值就是这张图片的最终预测结果。如果没有这些操作,AlexNet将出现严重的过拟合,使网络的深度不能达到这么深。
    2) Dropout是神经网络中一种非常有效的减少过拟合的方法
    在AlexNet中,在训练时,每层的keep_prob被设置为0.5。dropout只用于全连接层。
    在这里插入图片描述
    思考:
    1)每一层卷积核记录的特征有什么不同?
    答:五层卷积层中,第1,2,5有池化过程
    第一层:
    卷积输出特征图大小:(227-11)/4+1=55,即55*55*48*2
    池化输出特征图大小:(55-3)/2+1=27,即27*27*482
    第二层:
    卷积输出特征图大小:(27-5+2
    2)/1+1=27,即27*27*128*2
    池化输出特征图大小:(57-3)/2+1=13,即13*13*128*2
    第三层:
    卷积输出特征图大小:(13-3+1*2)/1+1=13,即13*13*192*2
    第四层:
    卷积输出特征图大小:(13-3+1*2)/1+1=13,即13*13*192*2
    第五层:
    卷积输出特征图大小:(13-3+1*2)/1+1=13,即13*13*128*2
    池化输出特征图大小:(13-3)/2+1=6,即6*6*128*2

    2)在神经网络中,为什么随着层数越深,卷积核组中的卷积核个数也在增加?
    答:为了获得更大的感受野,往往需要将卷积核设得比较大,如AlexNet中使用了11*11的大卷积核。但这种大卷积核导致计算量大幅增加,训练过程缓慢,更不利于训练深层模型。后来发现通过堆叠多个小卷积核可以获得和大卷积核相同的感受野,同时参数量也会减少,计算量也会大大减小。所以通过堆叠较小的卷积核比直接采用单个更大的卷积核更加有效并且能获得计算资源节约,即用若干个小卷积核替代一个大卷积核,因此,随着随着层数越深,卷积核组中的卷积核个数也在增加。

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7257

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值