Conv2D方法如何过滤另一个Conv2D层输出的特征图?

问题描述 投票:0回答:1

我不明白第二个Conv2D层的20个过滤器如何过滤第一个Conv2D层输出的10个特征图。 20 个过滤器中的每一个是否都过滤 10 个特征图(从第一个 Conv2D 层输出)中的每一个?如果是这样,为什么第二个 Conv2D 层的输出不是 20 X 10 = 200 个特征图?相反,第二个 Conv2d 层的输出似乎是 20 个特征图(无、8、8、20),如下图所示。

这来自 David Foster 的《生成深度学习》文本 This is from the text Generative deep learning  by David Foster

input_layer = layers.Input(shape=(32,32,3))
conv_layer_1 = layers.Conv2D(
   filters = 10
   , kernel_size = (4,4)
   , strides = 2
   , padding = 'same'
   )(input_layer)
conv_layer_2 = layers.Conv2D(
    filters = 20
   , kernel_size = (3,3)
   , strides = 2
    , padding = 'same'
   )(conv_layer_1)
flatten_layer = layers.Flatten()(conv_layer_2)
output_layer = layers.Dense(units=10, activation = 'softmax') 

(展平层) 模型 = models.Model(输入层, 输出层)

  • 层(类型)输出形状参数#

输入层(无、32、32、3)0

Conv2D(无、16、16、10)490

Conv2D(无、8、8、20)1,820

压平(无,1280)0

密集(无,10)12,810

python tensorflow conv-neural-network
1个回答
0
投票

第一个

conv2D
的输出大小为
?x16x16x10
,后面是大小为
20
3x3x10
过滤器。

对于

?
维度的每个切片,例如样本数量,
16x16x10
与过滤器
3x3x10
进行卷积,但要执行
20
次(因为有
20
不同的过滤器)。给定参数
padding = 'same'
strides = 2
,每个卷积切片
ceil(16/2)xceil(16/2)=8x8
的大小(您可以参考这篇文章进行计算),而
20
时间过滤将维度扩展到
8x8x20

© www.soinside.com 2019 - 2024. All rights reserved.