我认为与 Inception 模块的混淆是结构有些复杂。相关CS231n 幻灯片 (#37)上的观点说没有 FC 层是部分正确的。(请记住,这只是模型的摘要,以了解要点!)。在该幻灯片上解释的模型的实际部分中,它们仅指的是 Inception 模块:
没有 FC 层!
然而,定义将在决定模型中是否存在 FC 层方面发挥重要作用。
在更大的方案中(除了单个 Inception 模块),我们必须首先区分训练和测试时间架构。
在训练时有辅助分支,它们确实有一些完全连接的层。这些用于迫使中间层(或初始模块)在寻求最终答案时更加积极,或者用作者的话来说,更加具有辨别力。
来自论文(第 6 页[Szegedy 等人,2014]):
一个有趣的见解是,相对较浅的网络在这项任务上的强大性能表明,网络中间的层产生的特征应该是非常有辨别力的。通过添加连接到这些中间层的辅助分类器,我们希望鼓励在分类器的较低阶段进行区分,增加反向传播的梯度信号,并提供额外的正则化。
下面显示的模型切片显示了 inception 模块右侧的辅助分类器(分支)之一:
这个分支显然有几个 FC 层,其中第一个可能是非线性的,例如 aReLU
或tanh
。第二个简单地将 1000 个输入权重压缩到要预测的任意数量的类中(巧合与否,对于 ImageNet,这里是 1000)。
但是,在测试时,这些分支是不活跃的。它们仅用于训练模块的权重,但对整个模型架构结束时产生的最终分类概率没有贡献。
这一切都给我们留下了模型末尾的可疑块:
那里明显有一个很大的蓝色FC层!
这就是定义发挥作用的地方。这有点主观。是一个全连接层,其中每个米 重量连接到每个 n节点?它是学习表示的层吗?如果是,该层是否需要非线性?我们知道神经网络需要非线性,例如 ReLU 和 tanh 函数才能应用于层的输出(考虑前向流)。没有这些,神经网络将只是线性函数的组合,因此更深入理论上不会增加任何功能,因为我们本质上只会执行巨大的线性回归。
本着这种精神,我们可以看看最后一块拼图,并指出最后的 FC 层只是线性的!也就是说,它采用前Average Pooling
一层产生的所有权重,并将它们组合成只有 1000 个值的线性组合——为 softmax 做好准备。这都可以从网络架构的表格概述中理解:
那么,您是否同意斯坦福大学的观点?我做!