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
你能给我一个 运行 每层有多少神经元的记录吗?我觉得这会提高我对 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