对于连续的卷积层,filter 的维度是跟输入图像的维度一致
model = Sequential([ Conv2D(8, 3, input_shape=(28, 28, 1), use_bias=False), Conv2D(16, 3, use_bias=False) ]) model.summary()
输出
Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_3 (Conv2D) (None, 26, 26, 8) 72 _________________________________________________________________ conv2d_4 (Conv2D) (None, 24, 24, 16) 1152 ================================================================= Total params: 1,224 Trainable params: 1,224 Non-trainable params: 0 _________________________________________________________________
其中:
-
第一层的filter为 3x3x1x8=72(原始数据是 28x28x1,得到数据 26x26x8)
-
第二层的filter为 3x3x8x16=1152(上一个数据是 26x26x8,得到数据 24x24x16)
- 在计算卷积的时候,将前面的多层分别卷积求和,然后通过激活函数得到一个新的像素值
扩展:
对于多通道输入数据也是类似的,将多通道数据看成卷积后的多层,计算后面卷积的时候,分别进行卷积运算,然后求和,最后进行激活函数。
黄色的 3个 filter,实际上就是一个,分别做卷积再相加,然后得到一个像素值
如果是两个 filter,需要按照如下的设置,黄色的和橙色的