在Alex Krizhevsky 等人中。使用深度卷积神经网络进行 Imagenet 分类,它们枚举了每层中的神经元数量(见下图)。
网络的输入为 150,528 维,网络剩余层中的神经元数量由 253,440–186,624–64,896–64,896–43,264–4096–4096–1000 给出。
3D 视图
第一层之后所有层的神经元数量是明确的。计算神经元的一种简单方法是简单地将该层的三个维度相乘 ( planes X width X height
):
- 第 2 层:
27x27x128 * 2 = 186,624
- 第 3 层:
13x13x192 * 2 = 64,896
- 等等
但是,看第一层:
- 第 1 层:
55x55x48 * 2 = 290400
请注意,这与论文中 253,440
的规定不同!
计算输出大小
计算卷积输出张量的另一种方法是:
如果输入图像是 3D 张量
nInputPlane x height x width
,则输出图像大小将nOutputPlane x owidth x oheight
是
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
.
(来自Torch SpatialConvolution 文档)
输入图像为:
nInputPlane = 3
height = 224
width = 224
而卷积层为:
nOutputPlane = 96
kW = 11
kH = 11
dW = 4
dW = 4
(例如内核大小11
,步幅4
)
代入我们得到的这些数字:
owidth = (224 - 11) / 4 + 1 = 54
oheight = (224 - 11) / 4 + 1 = 54
因此,55x55
我们只需要匹配纸张所需的尺寸。它们可能是填充(但cuda-convnet2
模型明确将填充设置为 0)
如果我们采用54
-size 维度,我们会得到96x54x54 = 279,936
神经元 - 仍然太多。
所以我的问题是:
他们如何为第一个卷积层获得 253,440 个神经元?我错过了什么?