如何在tensorflow keras api中获取自定义损失函数的内部变量?

时间:2018-08-08 08:02:16

标签: tensorflow keras

我正在尝试为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_ *层的缩放因子找到每个卷积滤波器通道的相对重要性,以便我可以删除它们。

有没有办法做到这一点?

0 个答案:

没有答案