Keras:串联输出没有参数?
Keras: output of concatenation has no parameters?
我在使用 tf.keras.Concatenate() 方法时遇到了一个奇怪的问题。我正在尝试执行组卷积。这是代码。
# C2: (None, 27, 27, 96) -> (None, 27, 27, 256).
# Split (None, 27, 27, 96) into x2 (None, 27, 27, 48)
pool1_1 = Lambda(lambda x: x[:, :, :, :48])(pool1)
pool1_2 = Lambda(lambda x: x[:, :, :, 48:])(pool1)
#####################
# Grouped convolution.
#####################
conv2_1 = Conv2D(filters=128,
kernel_size=(5,5),
activation='relu',
padding='same',
name='conv2_1')(pool1_1)
conv2_2 = Conv2D(filters=128,
kernel_size=(5,5),
activation='relu',
padding='same',
name='conv2_2')(pool1_2)
conv2 = Concatenate(name='conv2', axis=-1)([conv2_1, conv2_2])
这里是 output.
如您所见,拼接后的图层参数为0。我预计它有 153728 * 2 个参数。这是为什么?
Concatenate
层没有参数,因为它们没有任何可学习的权重,操作只是连接,根本没有在该层进行任何学习。
所以你假设层必须有参数是错误的。
我在使用 tf.keras.Concatenate() 方法时遇到了一个奇怪的问题。我正在尝试执行组卷积。这是代码。
# C2: (None, 27, 27, 96) -> (None, 27, 27, 256).
# Split (None, 27, 27, 96) into x2 (None, 27, 27, 48)
pool1_1 = Lambda(lambda x: x[:, :, :, :48])(pool1)
pool1_2 = Lambda(lambda x: x[:, :, :, 48:])(pool1)
#####################
# Grouped convolution.
#####################
conv2_1 = Conv2D(filters=128,
kernel_size=(5,5),
activation='relu',
padding='same',
name='conv2_1')(pool1_1)
conv2_2 = Conv2D(filters=128,
kernel_size=(5,5),
activation='relu',
padding='same',
name='conv2_2')(pool1_2)
conv2 = Concatenate(name='conv2', axis=-1)([conv2_1, conv2_2])
这里是 output.
如您所见,拼接后的图层参数为0。我预计它有 153728 * 2 个参数。这是为什么?
Concatenate
层没有参数,因为它们没有任何可学习的权重,操作只是连接,根本没有在该层进行任何学习。
所以你假设层必须有参数是错误的。