广州网站百度排名推广,聊天代理分销系统,湖南麟辉建设集团有限公司网站,用wordpress做开放的wiki欢迎转载#xff0c;转载请注明#xff1a;本文出自Bin的专栏blog.csdn.net/xbinworld。
关于卷积神经网络CNN#xff0c;网络和文献中有非常多的资料#xff0c;我在工作/研究中也用了好一段时间各种常见的model了#xff0c;就想着简单整理一下#xff0c;以备查阅之需…欢迎转载转载请注明本文出自Bin的专栏blog.csdn.net/xbinworld。
关于卷积神经网络CNN网络和文献中有非常多的资料我在工作/研究中也用了好一段时间各种常见的model了就想着简单整理一下以备查阅之需。如果读者是初接触CNN建议可以先看一看“Deep Learning深度学习学习笔记整理系列”中关于CNN的介绍[1]是介绍我们常说的Lenet为例相信会对初学者有帮助。
Lenet1986年Alexnet2012年GoogleNet2014年VGG2014年Deep Residual Learning2015年
Lenet1986
就从Lenet说起可以看下caffe中lenet的配置文件点我可以试着理解每一层的大小和各种参数。由两个卷积层两个池化层以及两个全连接层组成。 卷积都是5*5的模板stride1池化都是MAX。下图是一个类似的结构可以帮助理解层次结构和caffe不完全一致不过基本上差不多 Alexnet2012
2012年Imagenet比赛冠军的model——Alexnet [2]以第一作者alex命名。caffe的model文件在这里。说实话这个model的意义比后面那些model都大很多首先它证明了CNN在复杂模型下的有效性然后GPU实现使得训练在可接受的时间范围内得到结果确实让CNN和GPU都大火了一把顺便推动了有监督DL的发展。
模型结构见下图别看只有寥寥八层不算input层但是它有60M以上的参数总量事实上在参数量上比后面的网络都大。 这个图有点点特殊的地方是卷积部分都是画成上下两块意思是说吧这一层计算出来的feature map分开但是前一层用到的数据要看连接的虚线如图中input层之后的第一层第二层之间的虚线是分开的是说二层上面的128map是由一层上面的48map计算的下面同理而第三层前面的虚线是完全交叉的就是说每一个192map都是由前面的128128256map同时计算得到的。
Alexnet有一个特殊的计算层LRN层做的事是对当前层的输出结果做平滑处理。下面是我画的示意图 前后几层对应位置的点对中间这一层做一下平滑约束计算方法是 具体打开Alexnet的每一阶段含一次卷积主要计算来看[2][3]
1con - relu - pooling - LRN 具体计算都在图里面写了要注意的是input层是227*227而不是paper里面的224*224这里可以算一下主要是227可以整除后面的conv1计算224不整除。如果一定要用224可以通过自动补边实现不过在input就补边感觉没有意义补得也是0。
2conv - relu - pool - LRN 和上面基本一样唯独需要注意的是group2这个属性强行把前面结果的feature map分开卷积部分分成两部分做。
3conv - relu 4conv-relu 5conv - relu - pool 6fc - relu - dropout 这里有一层特殊的dropout层在alexnet中是说在训练的以1/2概率使得隐藏层的某些neuron的输出为0这样就丢到了一半节点的输出BP的时候也不更新这些节点。 7 fc - relu - dropout 8fc - softmax
以上图借用[3]感谢。
GoogleNet2014
googlenet[4][5]14年比赛冠军的model这个model证明了一件事用更多的卷积更深的层次可以得到更好的结构。当然它并没有证明浅的层次不能达到这样的效果 这个model基本上构成部件和alexnet差不多不过中间有好几个inception的结构 是说一分四然后做一些不同大小的卷积之后再堆叠feature map。
计算量如下图可以看到参数总量并不大但是计算次数是非常大的。
VGG2014
VGG有很多个版本也算是比较稳定和经典的model。它的特点也是连续conv多计算量巨大比前面几个都大很多。具体的model结构可以参考[6]这里给一个简图。基本上组成构建就是前面alexnet用到的。
下面是几个model的具体结构可以查阅很容易看懂。 Deep Residual Learning2015
这个model是2015年底最新给出的也是15年的imagenet比赛冠军。可以说是进一步将conv进行到底其特殊之处在于设计了“bottleneck”形式的block有跨越几层的直连。最深的model采用的152层下面是一个34层的例子更深的model见表格。 其实这个model构成上更加简单连LRN这样的layer都没有了。 block的构成见下图 总结
OK到这里把常见的最新的几个model都介绍完了可以看到目前cnn model的设计思路基本上朝着深度的网络以及更多的卷积计算方向发展。虽然有点暴力但是效果上确实是提升了。当然我认为以后会出现更优秀的model方向应该不是更深而是简化。是时候动一动卷积计算的形式了。
参考资料
[1] http://blog.csdn.net/zouxy09/article/details/8781543/ [2] ImageNet Classification with Deep Convolutional Neural Networks [3] http://blog.csdn.net/sunbaigui/article/details/39938097 [4] http://blog.csdn.net/csyhhb/article/details/45967291 [5] Going deeper with convolutions [6] VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION