【发布时间】:2018-10-07 17:00:40
【问题描述】:
我在 keras 中构建了一个 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,因为第二层的每个过滤器都会作用于第一层输出的每个特征图吗?
基本上,我不明白一层的输出是如何馈送到另一层的输入的
【问题讨论】:
-
不,每个过滤器都应用于前一层输出的所有通道(即深度轴)。例如,在您的示例中,第二个
Conv2D层中的每个过滤器的形状为(3, 3, 8)。 -
我认为您指的是第一层,因为该层有 8 个过滤器。我说的对吗?
-
不,我指的是第二层的每个过滤器。该层中的每个过滤器(即内核)的形状为
(3,3,8)。第一个 Conv2D 层中的每个过滤器的形状为(3,3,1)。通常,Conv2D 层中的每个过滤器的形状为:(filter_height, filter_width, num_channels_in_output_of_previous_layer)。是清楚还是我需要解释更多? -
Conv2D 层中的每个过滤器的响应(即特征图)总是有一个通道。这就是为什么在第二层你有 16 个过滤器,所以你会有 16 个特征图作为输出。
标签: keras conv-neural-network convolution