本文小编为大家详细介绍“CNN中网络GoogLeNet的相关知识有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“CNN中网络GoogLeNet的相关知识有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
GoogLeNet网络是由Christian Szegedy在Google Research中发展起来的,该网络赢得2014年ILSVRC的冠军,成功的把top-5的错误率降到了7%,很大一个原因就是因为这个网络比之前介绍的CNN有更深的层。虽然层数更深,但是权重参数却是更少,比前面学的AlexNet网络要少上10倍。为什么呢?
一. Inception Module
那是因为该网络中有很大一部分的子网络是由如下图的Inception Module组成,我们来看一下下面的这个Inception Module:
其中表示“3x3+1(S)”表示该层的卷积核大小为3x3,stride为1,S means SAME padding。从上面的网络可以看出,首先输入信号被copy并输入到四个不同的层中,所有的卷积层都用ReLU激活函数。注意到上面的卷积层用的分别用1x1, 3x3, 5x5的卷积核,这样有助于捕捉到不同尺度的pattern。还有每个层都用了SAME padding,这就意味着,输入图像的宽高和输出的宽高是一致的,这就能够使得最终的Depth Concat能够实现(不同size的图像无法叠加)。在TensorFlow中,Depth Concat的实现是由concat()函数实现的,将其中的参数axis设为3.
我们可能已经发现,为什么会有一些卷积核的size是1x1呢?由于只有一颗像素,所以这些卷积层其实是无法获取任何特征的。事实上,这种层有两个目的:
首先就是降维,这些层的作用是使得输出的深度比输入的低,所以又称为瓶颈层,这样就达到一个降维的目的。这个效果在3x3和5x5的卷积层之前就特别有效,大大降低了训练权重的数量。
还有就是每一对([1x1,3x3]和[1x1,5x5])的卷积层,像一个强大的卷积层,能够捕获更为复杂的pattern.事实上确实如此,一个单层的卷积层就像是一个简单的线性分类器滑过图像,而该组合相当于是两层神经网络滑过图像。
每一个卷积层中卷积核的数量都是一个超参数,这就意味着一个Inception Module就有6个超参数需要调节。
二. GoogLeNet 构成
来我们一起看下GoogLeNet的构成,如下图。图中包含有9个inception module(图中带有螺旋形的标识)。inception module上的6个数字分别对应上图中每一个卷积层的输出个数。并且图中所有的卷积层都使用ReLU激活函数。
我们来一起看下这个网络:
为了降低计算负载,前两层的stride=2,意味着将图像的宽高分别除以4,面积缩小到之前的1/16。
为了使前面的层能够学到更多的特征,接着用了局部响应正则化(上期一起学过的)。
再接下来就是两个卷积层,类似一个瓶颈层,可以看做是一个智能卷积层。
下面又是一个局部响应正则化的层,来保证能够学到更多的特征。
接着用一个stride为2的最大值池化层来降低计算负载。
接着就是9个inception module,中间插了两个最大值池化层,来降维加速 。
接下来用了一个均值池化层,并且VALID padding。输出图像的size为1x1,这种策略称为全局均值池化。该策略能够很好的强迫之前的层输出更为有效的特征,因为其他特征将会被均值被过滤掉。这样就使得后面的全连接层比较少,没有必要像AlexNet那样有好几个全连接层。
最后就不说了,一个Dropout正则化,一个全连接层和softmax激活函数来获取输出结果。
上面的这个图相对来说更简单一些,原始的GoogLeNet在第三个和第六个inception module顶端还包含了两个辅助的分类器,他们都是由一个均值池化层,一个卷积层,两个全连接层和一个softmax激活层组成。在训练期间,他们损失的70%被加到网络整体损失中,这样做是为了防止梯度消失,并且正则化网络。然而,效果却相对较小。
读到这里,这篇“CNN中网络GoogLeNet的相关知识有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。