第十四节,卷积神经网络之经典网络Inception(四) (4)

第十四节,卷积神经网络之经典网络Inception(四)

Inception 模块会将之前层的激活或者输出作为它的输入,作为前提,这是一个28×28×192 的输入,和我们之前视频中的一样。我们详细分析过的例子是,先通过一个 1×1的层,再通过一个 5×5 的层, 1×1 的层可能有 16 个通道,而 5×5 的层输出为 28×28×32,共32 个通道。

第十四节,卷积神经网络之经典网络Inception(四)

为了在这个 3×3 的卷积层中节省运算量,你也可以做相同的操作,这样的话 3×3 的层将会输出 28×28×128。

第十四节,卷积神经网络之经典网络Inception(四)

或许你还想将其直接通过一个 1×1 的卷积层,这时就不必在后面再跟一个 1×1 的层了,这样的话过程就只有一步,假设这个层的输出是 28×28×64。

第十四节,卷积神经网络之经典网络Inception(四)

最后是池化层。,这里我们要做些有趣的事情,为了能在最后将这些输出都连接起来,我们会使用 same类型的 padding 来池化,使得输出的高和宽依然是 28×28,这样才能将它与其他输出连接起来。但注意,如果你进行了最大池化,即便用了 same padding, 3×3 的过滤器, stride 为 1,其输出将会是 28×28×192,其通道数或者说深度与这里的输入(通道数)相同。所以看起来它会有很多通道,我们实际要做的就是再加上一个 1×1 的卷积层,去进行我们在 1×1 卷积层的视频里所介绍的操作,将通道的数量缩小,缩小到 28×28×32。也就是使用 32 个维度为1×1×192 的过滤器,所以输出的维度其通道数缩小为 32。 这样就避免了最后输出时,池化层占据所有的通道。

第十四节,卷积神经网络之经典网络Inception(四)

最后,将这些方块全都连接起来。在这过程中,把得到的各个层的通道都加起来,最后得到一个 28×28×256 的输出。这就是一个 Inception 模块,而 Inception 网络所做的就是将这些模块都组合到一起。

第十四节,卷积神经网络之经典网络Inception(四)

这是一张取自 Szegety et al 的论文中关于 Inception 网络的图片,你会发现图中有许多重复的模块,可能整张图看上去很复杂,但如果你只截取其中一个环节(编号 1),就会发现这就是我们讲解的 Inception 模块。

我们深入看看里边的一些细节, 你会发现 Inception 网络只是由很多inception模块在不同的位置重复组成的网络,所以如果你理解了Inception 模块,你就也能理解 Inception 网络。

下图是一个比较清晰的结构图:

第十四节,卷积神经网络之经典网络Inception(四)

事实上,如果你读过论文的原文,你就会发现,这里其实还有一些分支,我现在把它们加上去。对上图做如下说明: 

 网络最后采用了average pooling来代替全连接层,想法来自NIN,事实证明可以将TOP1 accuracy提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便以后大家finetune;

上图用到了辅助分类器,除了最后一层的输出,其中间节点的分类效果也很好。因此在Inception Net中,还使用到了辅助分类节点(auxiliary classifiers),即将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中。这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个Inception Net的训练很有裨益。 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgydfd.html