windows 下alexnet模型的总结

来源:互联网 发布:音频矩阵使用方法 编辑:程序博客网 时间:2024/05/16 04:24

最近看了看alexnet模型,就表达下自己的看法和感受

我们从每一层开始讲吧!

先看下模型的总体结构:

 

文章使用了两个GPU。一个GPU执行上部分模型,另一个执行下部分模型。这个架构总共有8层,前五层是卷积层,后三层是全连接层,在前五层卷积层中的某些层中使用了RELU激励函数和局部响应归一化方法Local Response Normalization,而在降采样中选择重叠池化,选择重叠池化估计是为了防止遗漏细节,多学习点高层信息,但这样做引来了计算量太大了,有些区域重复计算。激励函数选择relu是有原因的,因为这个函数是非线性函数,它比我们以前的函数tanh达到相同目的训练时间相比来说少,更容易达到饱和。比如文章所说:

Deep convolutional neural networks withReLUs train several times faster than their
equivalents with tanhunits.


使用局部响应归一化方法目的是使学习到的特征不超出规定的范围,把值归一化到统一的区间。

再来看看每一层吧!

Conv1:


就如图中所看到的输入是224*224,但实际上输入是227*227,采用的是11*11*3的方式,但还用了96种卷积核,所以就变成了96个通道,接下来是使用了relu和normal方法,在池化中可以看到步伐小于size,那么就是重叠池化overlapping,先来计算下经过计算后图片的大小,我们是采用公式来计算,

【img_size - filter_size+2*pad】/stride +1 =new_feture_size ,注意【】表示向下取整,所以([227-11] / 4 + 1 )= 55,所以卷积之后图片大小是55*55,之后又经过池化,[55-3] / 2 + 1 ) = 27,池化之后得到的应该是27*27的大小,但是我们看到图中并不是27*27,那是因为他没有画出池化后的图像,只是画出了卷积后的图片大小。

Conv2:


细心的同学会发现文章作者在conv2开始采用分组了,分为两组(group 2)而且还添加了扩充边缘(pad:2),分组是因为作者采用了两块gpu,加快训练速度,卷积核大小是5*5*48,正如图片中可以看到,卷积之后的图片大小是(27+2*2-5

)/1+1=27,这是卷积之后的图像大小,经过池化是(27-3)/2+1=13,池化后的图像大小时13*13,也是重叠池化。

Conv3:

 


       在这一层可以看到:没有池化层,只有卷积和激励函数,也没有归一化层,为啥没有归一化层呢!归一化是用来把数据归一化到统一的区间,前面两层已经做过了,想必这个离散的数据也都归一化了,不会有离散的数据了,故作者在这里没有使用归一化方法再对数据进行归一化。为啥没有了池化层呢?大家想想,卷积后的图片大小是(13+2*1-3)/1+1=13,大家可以看到上一层之后的图片大小是13*13,卷积之后的图片大小也是13*13,为啥要这样做呢?你想想池化会把图片大小缩小两倍,如果缩小两倍就是6*6,那这样的话图片大小太小了,不方便下面层进行学习,故不再进行池化。

Conv4:


也是如此,卷积后端的图片大小是13*13,页没有归一化和池化。

Conv5:


可以看到在这层作者也有池化层了,因为之后是全连接层,要把图像大小变小点,

卷积:(13+2-3)/1+1=13

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

池化后的图片大小是6*6.

Fc6,fc7,fc8,loss大家都可以看的栋的,也就没啥我可以表达的了。

如果大家想知道各层参数的作用,给个我的博客链接地址,讲述了各层参数作用。

网址::http://blog.csdn.net/qq_34220460/article/details/70853830

最后作者为了避免过拟合,使用了一些方法来避免过拟合。比如:数据增益技术和dropout技术,在数据增益技术中作者使用crop方法,即:选择图片的四个角落和一个中心及它的水平翻转,这样既扩充了训练的数据量,随之而来也增加了一些负面例子,就能避免过拟合。其实在一些层中也使用了dropout技术,即consists of setting to zero the output of each hidden neuron withprobability 0.5。以 0.5的概率随机将隐层神经元的输出置为0,这样防止某些神经元学习到的特征具有过拟合性,这样让这个神经元继续重新学习。Dropout是刚开发出来的方法,效果很好。

 

1 0
原创粉丝点击