代码之家  ›  专栏  ›  技术社区  ›  konchy

为什么我们称CNN中的完全连接层为“顶层”?

  •  13
  • konchy  · 技术社区  · 7 年前

    我读过一些关于卷积神经网络的论文,发现几乎所有的论文都将正常CNN中的完全连接层称为“顶层”。

    然而,正如大多数论文所示,典型的CNN具有自上而下的结构,并且完全连接的层(后面通常是softmax分类器)放在网络的底部。那么,为什么我们称之为“顶层”?这是一种惯例还是有其他一些我不知道的考虑?

    2 回复  |  直到 7 年前
        1
  •  10
  •   Maxim    7 年前

    我认为这只是品味的问题,但是说“顶层”与神经网络中的“头”概念相关。人们说“分类头”和“回归头”是指神经网络的输出层(该术语用于 tf.estimator.Estimator ,另请参阅一些讨论 here here 顶部 一个,而输入层是 底部 . 无论如何,当被称为“顶部”时,您应该仔细检查特定层的含义。

        2
  •  10
  •   Lukasz Tracewski    7 年前

    有一个很好的理由将它们和其他层区别开来,远远超出“约定”。

    想象一下,现在你想建立自己的模型来识别可爱的猫,而不仅仅是猫。如果你从头开始,你必须提供大量的训练示例,以便模型首先学会识别猫的组成部分。通常情况下,您没有足够的数据量或足够的处理能力。您可能会做什么:

    1. 以现有的、性能良好的模型为例,该模型在ImageNet上具有已学习的权重。有一些惊人的,最先进的模型在那里,培训了数百万的图像。你很难打败ILSVRC比赛的获胜者。
    2. 移除顶层。您对原始模型学习到的所有标签都不感兴趣。
    3. 固定借用模型的权重。它已经很擅长识别猫了,你不想通过训练来增加体重。
    4. 添加你自己的顶层,在可爱的猫身上训练模特。

    背后的想法是,原始模型已经学会识别CNN层中的通用特征,并且这些特征可以重用。顶层已经超越了泛型,变成了训练集中的特定片段,这些片段可以被丢弃。那里没有可爱的猫。