CNN不同输入通道上对应的卷积核内容相同吗?

在写代码的时候,通常只会设定卷积核的输出通道与维数,但是在做卷积运算的时候卷积核的数量确变为了输出通道*输入通道*长*高,那我想问一下每一个输入通道上的卷积核内容相同吗

不同,可以在tf2.0中构建测试模型:

class Test(Model):

    def __init__(self):

        super(Test, self).__init__()

        self.conv1 = Conv2D(filters=1,kernel_size=(3,3),use_bias=False)

    def call(self, inputs):

        inputs  = layers.Input(shape=[28,28,3])

        x = inputs

        out = self.conv1(x)

        return out

model_test = Test()

model_test.build(input_shape=[28,28,3])

model_test.summary()

输出模型架构,可以发现,(3,3)的卷积核,在3个不同通道上是不同的,因此有27个可训练权重。

 

Model: "test_4" _________________________________________________________________ Layer (type) Output Shape Param # =================================================================

conv2d_11 (Conv2D) (None, 26, 26, 1) 27 =================================================================

Total params: 27 Trainable params: 27 Non-trainable params: 0

示意图: