你能告诉我每一层有多少神经元吗?我觉得这将提高我对 VGG 中正在发生的事情的理解。
让我们在这里使用这段代码来获得一些具体的东西。
https://github.com/machrisaa/tensorflow-vgg/blob/master/vgg19.py#L46
在这一行中,我看到输入了 224x224x3(图像)。在代码中的每一行之后(每行代表一个层),该图像的尺寸会发生什么变化?
谢谢你。
你能告诉我每一层有多少神经元吗?我觉得这将提高我对 VGG 中正在发生的事情的理解。
让我们在这里使用这段代码来获得一些具体的东西。
https://github.com/machrisaa/tensorflow-vgg/blob/master/vgg19.py#L46
在这一行中,我看到输入了 224x224x3(图像)。在代码中的每一行之后(每行代表一个层),该图像的尺寸会发生什么变化?
谢谢你。
您发布的调试信息是每个操作/层输出的尺寸。它与“神经元”的数量有关,但并不相同。
VGG-19 中只有两种类型的层(不包括 softmax 和全连接):
假设我们想将网络解释为一组神经元。神经元是每个具有一组权重的单元,用于收集其输入的加权和,然后进行非线性变换。
首先,全连接层中有神经元: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
我找到了一种检测代码的方法,并得出了每一层的大小。这让我现在很清楚。如果您好奇,我使用了 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]