我正在尝试为network slimming添加批次归一化缩放因子的L1损失。
例如,让我们采用一个简单的mnist分类器:
inputs = keras.Input(shape=(28, 28, 1))
conv_1 = keras.layers.Conv2D(
32, kernel_size=(3, 3), padding='same', activation=tf.nn.relu)(inputs)
bn_1 = keras.layers.BatchNormalization()(conv_1)
conv_2 = keras.layers.Conv2D(
32, kernel_size=(3, 3), padding='same', activation=tf.nn.relu)(bn_1)
bn_2 = keras.layers.BatchNormalization()(conv_2)
conv_3 = keras.layers.Conv2D(
32, kernel_size=(3, 3), padding='same', activation=tf.nn.relu)(bn_2)
bn_3 = keras.layers.BatchNormalization()(conv_3)
conv_4 = keras.layers.Conv2D(
32, kernel_size=(3, 3), padding='same', activation=tf.nn.relu)(bn_3)
bn_4 = keras.layers.BatchNormalization()(conv_4)
conv_5 = keras.layers.Conv2D(
10, kernel_size=(3, 3), padding='same')(bn_4)
bn_5 = keras.layers.BatchNormalization()(conv_5)
gap = keras.layers.GlobalAveragePooling2D()(bn_5)
outputs = keras.layers.Activation('softmax')(gap)
model = keras.Model(inputs=inputs, outputs=outputs)
我的目标是通过bn_ *层的缩放因子找到每个卷积滤波器通道的相对重要性,以便我可以删除它们。
有没有办法做到这一点?