美文网首页
AlexNet :ImageNet Classification

AlexNet :ImageNet Classification

作者: Loopz | 来源:发表于2018-08-06 19:51 被阅读0次

    网络架构:

    网络架构

    整个网络一共有八层,包括5层卷积层,3层全连接层,最后一层为输出层,输出1000维的vector,表示该image在1000类图像的分布情况。

    每一卷积层和全连接层的都与激活层相连。第一,第二层卷积层之后,紧连着局部响应归一化层(Local Response Normalization),之后为池化层(下采样,MaxPooling)。第五层卷积层,紧连着池化层。

    各层策略:

    Local Response Normalization:

    将当前神经元的输出与其邻近的n个神经元做归一化,对输出做一个尺度变换,(使得每个输出分布更集中,加快收敛,泛化性能)。ai表示第i个神经元输出,bi表示归一化后的神经元输出,k,a,n为常量,为超参数。

    Local Response Normalization

    Maxpooling层:

    Max Pooling对得到的结果进行下采样,缩小输出结构。以往的池化层,采取无重叠池化。在AlexNet中,作者采用有重叠池化。实验结果表明,有重叠池化较无重叠池化更难于过拟合。假设输入为I,pooling区域大小为F,步长为stride,则输出大小为:(I - F)/stride  + 1

    当无重叠池化时,F=stride,即 I/stride - F/stride + 1 = I/stride。

    文中取F = 3,stride =2 即 (I - 3)/2 + 1

    non-overlapping overlapping

    个人感觉重叠池化做法,与HOG特征生成过程中的归一化有点类似,归一化过程 ,block之间是有重叠的。重叠池化,考虑周围特征,把局部最显著的特征留下。

    激活层(激活函数的选择):

    tanh Vs ReLu

    文中从收敛速度角度对比了tanh与ReLu激活函数,如图(实线表示ReLu,虚线表示tanh)。从图可看到,以tanh为激活函数,需要经过更多个epoch才能达到0.25的错误率。以ReLu为激活函数,模型收敛速度更快。

    整体架构:

    input(224 * 224 *3)

    first layer:

    first,second layer

    Conv(Filter : 11*11*96,stride=4): (224 - 11)/4 +1 = 55  , 55*55 * 96   (拆成 55*55 * 48,,55*55*48便于两块CPU并行工作)

    maxpooling: (55 - 3) /2 +1 = 27

    second layer:

    Conv (Filter:3*3*256,stride = 1,zero padding,padding = 1):(27+2 - 3)/1 +1 = 27, 27*27*256  (拆成 27*27 * 128,,27*27*128)

    maxpooling: (27 - 3) /2 +1 = 13

    thrid layer:


    third,fourth layer

    Conv (Filter:3*3*384,stride = 1,zero padding,padding = 1):(13+2 - 3)/1 +1 = 13, 13*13*384  (拆成 13*13* 192,,13*13*192)

    fourth layer:

    Conv (Filter:3*3*384,stride = 1,zero padding,padding = 1):(13+2 - 3)/1 +1 = 13, 13*13*384 (拆成 13*13 * 192,,13*13*192)

    Fifth layer:

    fifth layer

    Conv (Filter:3*3*256,stride = 1,zero padding,padding = 1):(13+2 - 3)/1 +1 = 13, 13*13*256  (拆成 13*13 * 128,,13*13*128)

    maxpooling: (13 - 3) /2 +1 = 6

    全连接层

    全连接层可看成上一层特征与同等大小的卷积核卷积得到。

    第六层:

    输入为: 6*6*128

    滤波器:6*6 * 4096(4096个滤波器,每个滤波器有128个卷积核,每个卷积核大小 6*6) 得到 1*1*4096

    下一层:1*1* 4096

    最后一层:1*1*1000(1000个滤波器,每个滤波器有4096个卷积核,每个卷积核大小 1*1)

    训练及优化:

    减少过拟合风险:

    数据增强(data argumentation):

    对现有的数据进行一定的变换,用于训练。变换需是有意义的变换

    1.对一256*256的图像,随机采样得到224*224的图片,并变换得到其水平反射图像,训练的样本增加2048倍((256-224)**2 * 2)

    2.原本图像加上主成分特征向量与特征值和一个随机变量的乘积。

    PCA数据变换 注释

    dropout:以0.5的概率将一些的神经元输出设为0。

    训练:

    训练策略:用随机梯度下降的动量形式训练模型。

    参数更新

    参数初始化:

    以均值为0,标准差为0.01的高斯分布初始化参数w。

    学习率的改变:

    初始化为0.01,当验证集错误率停止上升时,学习速率除以10,学习速率减小。


    问题:为什么归一化层只在前两层?激活层:从线性到非线性的映射。滤波器3*3?maxpooling,3,4,5层的作用。从卷积层到最后输出采用全连接层的作用。

    归一化的作用?

    overlapping Pooling?

    ReLu负半轴为0,未能激活?

    代码:https://github.com/kratzert/finetune_alexnet_with_tensorflow

    相关文章

      网友评论

          本文标题:AlexNet :ImageNet Classification

          本文链接:https://www.haomeiwen.com/subject/ghlgvftx.html