【问题标题】:Understanding the dimensions of a fully-connected layer that follows a max-pooling layer [closed]了解最大池层之后的全连接层的尺寸[关闭]
【发布时间】:2017-08-01 17:14:20
【问题描述】:

在下面的图表(架构)中,4096 个单元的(全连接)密集层是如何从维度 256x13x13 的最后一个最大池层(右侧)派生的?而不是 4096,不应该是 256*13*13=43264 吗?

【问题讨论】:

标签: neural-network deep-learning conv-neural-network


【解决方案1】:

不,4096 是该层输出的维度,而输入的维度是 13x13x256。如图所示,两者不必相等。

【讨论】:

  • 是的。我知道,它不必相同。我想我没有正确地提出这个问题。请再次检查,已进行修改。
  • @xlax 4096 不是来自任何东西,它就是这样设计的,而且看起来效果很好。
【解决方案2】:

池化层的输出大小为

output = (input size - window size) / (stride + 1)

在上述情况下,输入大小为 13,大多数池化实现添加了额外的填充层,以保持计算中的边界像素,因此输入大小将变为 14。

最常见的窗口大小和步幅是 W = 2 和 S = 2 所以把它们放在公式中

output = (14 - 2) / (2 + 1)
output = 12 / 3
output = 4

现在将生成 256 个 4x4 大小的特征图,将其展平即可得到

flatten = 4 x 4 x 256
flatten = 4096

希望这能回答你的问题。

【讨论】:

  • 那是一个卷积层的输出大小,不是max-pooling的,max-pooling的输出形状就是w/pool-size,h/pool-size,最常见的是w/2 , h / 2.
  • 我是从这里cs231n.github.io/convolutional-networks/#pool 了解到的,请阅读以澄清您的疑问。
  • 现在我看到了问题,您应用的方程式不正确,如果您插入 F = 2 和 S = 2,方程式会简化为 W / 2、H / 2。
【解决方案3】:

如果我是正确的,您是在问为什么4096x1x1 层要小得多。

那是因为它是一个全连接层。最后一个最大池化层的每个神经元(=256*13*13=43264 神经元)都连接到全连接层的每个神经元。

这是一个 ALL to ALL 连接神经网络的例子: 如您所见,layer2 大于 layer3。这并不意味着他们无法连接。

最后一个最大池化层没有转换->最大池化层中的所有神经元都与下一层的所有4096个神经元连接。

“密集”操作只是意味着计算所有这些连接(= 4096 * 43264 个连接)的权重和偏差,并添加神经元的偏差来计算下一个输出。

它的连接方式与 MLP 相同。

但为什么是 4096?没有推理。这只是一个选择。可能是 8000,也可能是 20,这取决于什么最适合网络。

【讨论】:

    【解决方案4】:

    你是对的,最后一个卷积层有256 x 13 x 13 = 43264 神经元。但是,stride = 3pool_size = 2 有一个最大池化层。这将产生大小为256 x 6 x 6 的输出。您将其连接到一个全连接层。为了做到这一点,您首先必须展平输出,它将形成 - 256 x 6 x 6 = 9216 x 1。为了将9216 神经元映射到4096 神经元,我们引入了9216 x 4096 权重矩阵作为密集/全连接层的权重。因此,w^T * x = [9216 x 4096]^T * [9216 x 1] = [4096 x 1]。简而言之,每个9216 神经元将连接到所有4096 神经元。这就是为什么该层被称为密集层或全连接层的原因。

    正如其他人在上面所说的那样,对于为什么应该是 4096 没有硬性规定。密集层只需要有足够数量的神经元才能捕获整个数据集的可变性。正在考虑的数据集 - ImageNet 1K - 相当困难,有 1000 个类别。所以4096 神经元一开始似乎并不过分。

    【讨论】:

    • 我猜他的问题和我的差不多。如果fc层第一层有4096,最后一个pooling层的输出给我们9216,怎么把这9216输入到4096中。Dropout?辍学是我的猜测,但我想问一下
    • 感谢9216 x 14096 x 1 部分特别有帮助
    • Dropout 不会减少网络中存在的神经元数量。它只是“关闭”特定部分的神经元。 9216 x 4096 矩阵是您问题的答案。我也在我的回答中描述了这一点。
    【解决方案5】:

    我会用图片来展示,看下面的网络图片Alexnet

    256 * 13 *13 将执行max pooling 运算符然后它将是256 * 6 * 6=9216。然后将被展平为连接到 4096 全连接网络,因此参数将为 9216 * 4096。您可以在下面的 excel 中看到所有计算的参数。

    引用:

    https://www.learnopencv.com/understanding-alexnet/

    https://medium.com/@smallfishbigsea/a-walk-through-of-alexnet-6cbd137a5637

    【讨论】:

      【解决方案6】:

      我相信您想知道从卷积层到全连接或密集层的过渡是如何形成的。您必须意识到,查看卷积层的另一种方式是它是密集层,但连接稀疏。 Goodfellow 的书深度学习第 9 章对此进行了解释。

      池化操作的输出也有类似的情况,最终得到的结果类似于卷积层的输出,但经过汇总。然后所有卷积核的所有权重都可以连接到一个全连接层。这通常需要第一个具有许多神经元的全连接层,因此您可以使用第二(或第三)层来进行实际的分类/回归。

      至于卷积层之后的密集层中神经元数量的选择,其背后没有数学规则,就像卷积层一样。由于该层是全连接的,因此您可以选择任何大小,就像在典型的多层感知器中一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-19
        • 2018-07-26
        • 2019-08-21
        • 2022-01-05
        • 1970-01-01
        • 2019-10-28
        相关资源
        最近更新 更多