VGG 的每一层有多少个神经元?

How many neurons are going into each layer of VGG?

你能给我一个 运行 每层有多少神经元的记录吗?我觉得这会提高我对 VGG 中发生的事情的理解。

让我们在这里使用这段代码只是为了得到一些具体的东西。

https://github.com/machrisaa/tensorflow-vgg/blob/master/vgg19.py#L46

在这一行中,我看到输入了 224x224x3(图像)。在代码中的每一行之后(每行代表一个层),该图像的尺寸发生了什么变化?

谢谢。

我找到了一种检测代码的方法,并得到了每一层的大小。这让我现在很清楚。如果您好奇的话,我使用了 tensorflow 中的交互式会话功能来完成这项工作。

conv1_1 [100, 224, 224, 64]

conv1_2 [100, 224, 224, 64]

池1 [100, 112, 112, 64]

conv2_1 [100, 112, 112, 128]

conv2_2 [100, 112, 112, 128]

池2 [100, 56, 56, 128]

conv3_1 [100, 56, 56, 256]

conv3_2 [100, 56, 56, 256]

conv3_3 [100, 56, 56, 256]

conv3_4 [100, 56, 56, 256]

池3 [100, 28, 28, 256]

conv4_1 [100, 28, 28, 512]

conv4_2 [100, 28, 28, 512]

conv4_3 [100, 28, 28, 512]

conv4_4 [100, 28, 28, 512]

池4 [100, 14, 14, 512]

conv5_1 [100, 14, 14, 512]

conv5_2 [100, 14, 14, 512]

conv5_3 [100, 14, 14, 512]

conv5_4 [100, 14, 14, 512]

池5 [100, 7, 7, 512]

fc6 [100, 4096]

relu6 [100, 4096]

fc7 [100, 4096]

relu7 [100, 4096]

fc8 [100, 1000]

概率 [100, 1000]

您发布的调试信息是每个 op/layer 输出的维度。跟"neurons"的个数有关,但不一样

输出维度从何而来?

VGG-19只有两种层(不包括softmax和全连接层):

  • 卷积层:它们都使用步幅为 1 和填充为 1 的 3x3 滤波器。这意味着输出体积将与输入体积具有相同的宽度和高度(并且深度等于过滤器的数量)。下面参考文献的幻灯片 44 包含计算给定输入维度和卷积参数的输出的公式。
  • 最大池层数:它们都使用 2x2 windows,步幅为 2。这意味着输出量将是输入量的一半宽度和一半高度.幻灯片 56.

神经元在哪里?

假设我们想将网络解释为一组神经元。神经元是具有一组权重的每个单元,它用于收集其输入的加权和,然后进行非线性变换。

首先,全连接层有神经元:4096 + 4096 + 1000 = 9192个神经元。

其次,卷积层中有神经元。基本上您可以将每个过滤器视为一个神经元(幻灯片 50 上有一个很好的插图)。

您可以轻松地在幻灯片 71 上查找每层的过滤器数量(例如,conv3-64 代表 64 个 3x3 过滤器)。对于 VGG-19,我们有 2*64 + 2*128 + 4*256 + 2*4*512 = 5504 个神经元。

综上所述,在实践中,通常人们会用参数数量(即权重)和层数来衡量网络的大小。 VGG-19 有 1.44 亿个参数,非常大。为了进行比较,训练集有 130 万个示例。

参考:http://cs231n.stanford.edu/slides/winter1516_lecture7.pdf