2-6 Inception 网络
Inception 网络( Inception network)
这是一个28×28×192 的输入,先通过一个 1×1的层,再通过一个 5×5 的层, 1×1 的层可能有 16 个通道,而 5×5 的层输出为 28×28×32,共32 个通道。
也可以过一个3×3 的卷积层,这样的话 3×3 的层将会输出 28×28×128。
或许你还想将其直接通过一个 1×1 的卷积层,这时就不必在后面再跟一个 1×1 的层了,这样的话过程就只有一步,假设这个层的输出是 28×28×64。
为了能在最后将这些输出都连接起来,我们会使用 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。这样就避免了最后输出时,池化层占据所有的通道。
最后,将这些方块全都连接起来。在这过程中,把得到的各个层的通道都加起来,最后得到一个 28×28×256 的输出。通道连接实际就是之前视频中看到过的,把所有方块连接在一起的操作。这就是一个 Inception 模块,而 Inception 网络所做的就是将这些模块都组合到一起。
这是一张取自 Szegety et al 的论文中关于 Inception 网络的图片,你会发现图中有许多重复的模块,可能整张图看上去很复杂,但如果你只截取其中一个环节,就会发现这是一个 Inception 模块。
所以 Inception 网络只是很多这些你学过的模块在不同的位置重复组成的网络,所以如果你理解了之前所学的 Inception 模块,你就也能理解 Inception 网络。
除此之外,还应该注意到网络中包含了几个全连接层和softmax来预测输出结果的标签。
还有这个特别的 Inception 网络是由 Google 公司的作者所研发的,它被叫做 GoogleLeNet,这个名字是为了向 LeNet 网络致敬。