方法一:使用for循环lambda层及concatenate实现group
def grouped_convolution_block(init, grouped_channels,cardinality, strides):
# grouped_channels 每组的通道数
# cardinality 多少组
channel_axis = -1
group_list = []
for c in range(cardinality):
x = Lambda(lambda z: z[:, :, :, c * grouped_channels:(c + 1) * grouped_channels])(init)
x = Conv2D(grouped_channels, (3,3), padding='same', use_bias=False, strides=(strides, strides),
kernel_initializer='he_normal', kernel_regularizer=l2(weight_decay))(x)
group_list.append(x)
group_merge = concatenate(group_list, axis=channel_axis)
x = BatchNormalization()(group_merge)
x = Activation('relu')(x)
return x
def block_module(x,filters,cardinality,strides):
# residual connection
init = x
g