模型初始化后激活正则化
Regularization of activations once the model is initialized
我想在 Tensorflow.keras 中使用层循环在预训练网络上添加激活正则化。
如果我想正则化 weights 或 biases,我可以这样做:
l1=0.001
l2=0.001
for layer in model.layers:
if isinstance(layer, DepthwiseConv2D):
layer.add_loss(regularizers.l1_l2(l1,l2)(layer.depthwise_kernel))
elif isinstance(layer, layers.Conv2D) or isinstance(layer, layers.Dense):
layer.add_loss(regularizers.l1_l2(l1,l2)(layer.kernel))
if hasattr(layer, 'bias_regularizer') and layer.use_bias:
layer.add_loss(regularizers.l1_l2(l1,l2)(layer.bias))
据我了解和测试:这是有效的。
但是我不清楚如何针对 activations 正则化执行此操作。具体来说,我想将激活层的输出添加到损失中。
我想我应该这样做:
for layer in model.layers:
if isinstance(layer, Activation):
layer.add_loss(regularizers.l1_l2(l1,l2)(layer.XXX))
但我不清楚应该用什么替换上面的 XXX。
在此先感谢您的帮助!
But it is not clear to me what should be replacing XXX in the above.
layer.output
我想在 Tensorflow.keras 中使用层循环在预训练网络上添加激活正则化。
如果我想正则化 weights 或 biases,我可以这样做:
l1=0.001
l2=0.001
for layer in model.layers:
if isinstance(layer, DepthwiseConv2D):
layer.add_loss(regularizers.l1_l2(l1,l2)(layer.depthwise_kernel))
elif isinstance(layer, layers.Conv2D) or isinstance(layer, layers.Dense):
layer.add_loss(regularizers.l1_l2(l1,l2)(layer.kernel))
if hasattr(layer, 'bias_regularizer') and layer.use_bias:
layer.add_loss(regularizers.l1_l2(l1,l2)(layer.bias))
据我了解和测试:这是有效的。
但是我不清楚如何针对 activations 正则化执行此操作。具体来说,我想将激活层的输出添加到损失中。
我想我应该这样做:
for layer in model.layers:
if isinstance(layer, Activation):
layer.add_loss(regularizers.l1_l2(l1,l2)(layer.XXX))
但我不清楚应该用什么替换上面的 XXX。
在此先感谢您的帮助!
But it is not clear to me what should be replacing XXX in the above.
layer.output