在写代码的时候,通常只会设定卷积核的输出通道与维数,但是在做卷积运算的时候卷积核的数量确变为了输出通道*输入通道*长*高,那我想问一下每一个输入通道上的卷积核内容相同吗
不同,可以在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
示意图: