1

你能告诉我每一层有多少神经元吗?我觉得这将提高我对 VGG 中正在发生的事情的理解。

让我们在这里使用这段代码来获得一些具体的东西。

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

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

谢谢你。

4

2 回答 2

2

您发布的调试信息是每个操作/层输出的尺寸。它与“神经元”的数量有关,但并不相同。

输出维度从何而来?

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

  • 卷积层:它们都使用步长为 1 且填充为 1 的 3x3 过滤器。这意味着输出体积将具有与输入体积相同的宽度和高度(深度等于过滤器的数量)。下面参考资料的幻灯片 44 具有在给定输入维度和卷积参数的情况下计算输出的公式。
  • 最大池层:它们都使用步长为 2 的 2x2 窗口。这意味着输出体积将具有输入体积的一半宽度和一半高度。幻灯片 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

于 2016-11-03T07:48:23.347 回答
0

我找到了一种检测代码的方法,并得出了每一层的大小。这让我现在很清楚。如果您好奇,我使用了 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]

pool4 [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]

pool5 [100, 7, 7, 512]

fc6 [100, 4096]

relu6 [100, 4096]

fc7 [100, 4096]

relu7 [100, 4096]

fc8 [100, 1000]

概率 [100, 1000]

于 2016-11-03T05:12:25.873 回答