Neural network 了解最大池层之后的完全连接层的尺寸

Neural network 了解最大池层之后的完全连接层的尺寸,neural-network,deep-learning,conv-neural-network,Neural Network,Deep Learning,Conv Neural Network,在下图(架构)中,4096个单元的(完全连接的)密集层是如何从维度为256x13x13的最后一个max pool层(右侧)派生出来的?不是4096,而是256*13*13=43264 否,4096是该层输出的维度,而输入的维度是13x13x256。两者不必如图中所示相等。池层的输出大小为 output = (input size - window size) / (stride + 1) 在上述情况下,输入大小为13,池的大多数实现都会添加额外的填充层,以便在计算中保留边界像素,因此输入大小将

在下图(架构)中,4096个单元的(完全连接的)密集层是如何从维度为
256x13x13
的最后一个max pool层(右侧)派生出来的?不是4096,而是256*13*13=43264


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

池层的输出大小为

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

希望这能回答您的问题。

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

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

这是一个全对全连接神经网络的示例: 如您所见,第二层比第三层大。这并不意味着他们不能联系

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

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

它和MLP有联系


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

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


正如上面其他人所说的,没有硬性规定为什么应该是4096。密集层只需要有足够数量的神经元就可以捕获整个数据集的可变性。正在考虑的数据集ImageNet 1K非常困难,有1000个类别。因此,4096个神经元一开始似乎并不太多

我将通过图像显示,查看下面的网络图像
Alexnet

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

引用:


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

类似的东西适用于池操作的输出,您只需要得到类似于卷积层输出的东西,但进行了总结。所有卷积核的所有权重都可以连接到一个完全连接的层。这通常需要一个具有许多神经元的第一个完全连接层,因此可以使用第二(或第三)层来进行实际的分类/回归


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

是的。我知道,它不一定是一样的。我想我没有把问题提对。请再次检查,已经做了编辑。@xlax 4096不是来自任何东西,它是这样设计的,而且似乎工作得很好。这是卷积层的输出大小,不是最大池,最大池的输出形状只是w/池大小,h/池大小,最常见的是w/2,h/2。我从这里学到了这个,请阅读它来澄清你的疑问。现在我看到了问题,你应用的方程不正确,如果你插入F=2和S=2,方程简化为W/2,h/2。我想他的问题和我的类似。如果fc层的第一层有4096个,最后一个池层的输出为9216。如何将这些9216输入4096。辍学者我猜是辍学,但我想问一下,辍学并没有减少神经网络中神经元的数量,这一部分特别有用。它只是“关闭”了一部分特定的神经元。一个
9216 x 4096
矩阵就是您问题的答案。我在回答中也描述了这一点。我投票结束这个问题,因为它属于