1

我一直在尝试理解卷积神经网络,但我搞砸了它的输出大小。

公式非常简单,但我最终还是让自己感到困惑。我从 Internet 上的许多资源中学习,例如 AndrewNg 的 deeplearning.ai。

所以这就是我感到困惑的地方。

OutputSize = InputSize - Filter + 1

如果我InputSize11 x 11 x 16并且我使用max poolwith filter size 2。通过数学计算,我的形状应该是5.5 x 5.5 x 16.

这个浮点值(5.5)是四舍五入还是5在你喂它的时候被取走?

4

1 回答 1

0

您描述的公式是特定设置的部分情况。一个通用的公式是这样的:

W2 = (W1 - F + 2*P) / S + 1
H2 = (H1 - F + 2*P) / S + 1

如您所见,它不仅取决于过滤器大小F,还取决于步幅S和填充大小P(因此您的公式仅适用于P=0and S=1)。

在最大池化的情况下,S通常是2,以便池化执行图像下采样。结果仅取决于填充:

  • 如果P=0,结果将是5x5x16(即,它是值的上限)。
  • 如果P=1,结果将是6x6x16
  • 任何更大的填充没有任何意义,但您可以使用上面的公式计算输出大小。

这是keras中的示例代码:

input = Input(shape=(11, 11, 16))
print(MaxPool2D(pool_size=(2, 2), strides=2, padding='valid')(input).shape)
# >>> (?, 5, 5, 16)
print(MaxPool2D(pool_size=(2, 2), strides=2, padding='same')(input).shape)
# >>> (?, 6, 6, 16)
于 2018-01-31T14:48:31.333 回答