计算卷积神经网络特征图的维度。

4

我在Keras中有卷积神经网络。 我需要知道每层特征映射的维度。 我的输入是28x28像素的图像。我知道有一种方法可以计算这个,但我不确定怎么做。下面是我在Keras中使用的代码片段。

img_rows, img_cols = 28, 28
nb_filters = 32
nb_pool = 2
nb_conv = 3

model = Sequential()

model.add(Convolution2D(nb_filters, nb_conv, nb_conv, border_mode='valid', input_shape=(1, img_rows, img_cols)))
model.add(Activation('relu'))
model.add(Convolution2D(nb_filters, nb_conv, nb_conv))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(nb_pool, nb_pool)))
model.add(Dropout(0.25))

model.add(Convolution2D(64, nb_conv, nb_conv, border_mode='valid'))
model.add(Activation('relu'))
model.add(Convolution2D(64, nb_conv, nb_conv))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(nb_pool, nb_pool)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))


model.add(Dense(nb_classes))
model.add(Activation('softmax'))

我想画的东西

说到底,这就是我想画的东西。谢谢。

1个回答

7
请查看这篇文章
输出体积的空间大小公式为:K*((W−F+2P)/S+1),其中W - 输入体积大小,F - Conv层神经元的感受野大小,S - 应用它们的步幅,P - 在边界上使用的零填充量,K - Conv层的深度。

那么根据上述公式 (W−F+2P)/S+1,其中 W=28,F=3,在上面的代码中我不确定步幅值是多少,我假设它为 S=1。那么计算结果为 (28-3+0)/1 + 1 = 26。有人可以验证一下吗? - dnth
我认为我找到了步幅值。默认步幅为S=1,在当前Keras版本中称为subsample。默认值可以在Convolution2D类中找到。 - dnth
1
@dnth 我有同样的问题,所以你的答案是 26 吗? - Calvin Cheng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接