具有多个滤波器的卷积层的输出形状

时间:2018-10-07 17:00:41

标签: keras conv-neural-network convolution

我在喀拉拉邦建立了一个ConvNet,这些是其中的2层

model.add(Conv2D(8 , 3 , input_shape = (28,28,1)))
model.add(Activation(act))

model.add(Conv2D(16 , 3))
model.add(Activation(act))

我完全理解大小为26x26x8的第一层的输出,因为有8个大小为3x3的滤镜,每个滤镜都用于生成单独的特征图,因此为26x26x8

第二层的输出大小为24x24x16,我无法理解。输出的大小不应该为24x24x128,因为第二层的每个过滤器都会作用于第一层的输出的每个特征图上?

基本上,我不了解如何将一层的输出馈送到另一层的输入

2 个答案:

答案 0 :(得分:1)

否,它是convolutions over volume。每个过滤器都适用于所有通道。

答案 1 :(得分:0)

如果有人花时间实际写出数学,我会喜欢它。但我猜没有人知道实际操作是什么。 “适用于所有渠道”的含糊不清的语言与 OP 认为正在发生的事情是一样的。上面的评论者使用这种语言表示他们总结所有渠道。不清楚。

我和 OP 有同样的问题。我找到了答案。 Keras 中的 Conv2D 层的卷积操作创建了一个与输入具有相同最终维度的过滤器。

假设您有一个形状为 (6, 6, 3) 的输入 X,一个大小为 6×6 的 3 个通道(颜色或其他)的张量。然后用

创建一个二维卷积层
conv = Conv2D(2, 3, input_shape=(6, 6, 3))

将创建 2 个大小为 (3, 3, 3)、f1 和 f2 的过滤器。然后将每个过滤器以正确的方式应用于输入看起来像 f1ijk Xijk,其中 i 和 j 对位置的所有相关索引求和,颜色通道 k 对所有值求和,即 1、2 和 3这里。这会为每个过滤器生成大小为 (4, 4, 1) 的输出。两个过滤器一起产生大小为 (4, 4, 2) 的输出。

如果我们像 OP 那样假设,每个 3 通道张量过滤器都只有 (3, 3, 1) 的形状,那么您就会对如何处理它的应用程序感到困惑3 维张量,这可能会导致关心实际操作的人认为过滤器将作为张量产品应用,从而显着提高层的输出维度。