在深度神经网络的训练中,如何使用tf.keras.layers.ActivityRegularization
来规范输出?
在我的代码中,output
具有非常大的价值。所以我试着将它正规化。所以对于我最后的密集层,我试过了:
output = tf.layers.dense(inputs=dropout_dense1,
units=NUM_OUTPUTS,
kernel_initializer=tf.truncated_normal_initializer,
activity_regularizer = tf.keras.layers.ActivityRegularization())
但output
(仍然非常大)没有观察到正则化效应。我尝试了各种参数组合(默认为tf.keras.layers.ActivityRegularization(L1=0, L2=0)
),但它似乎没有任何效果。
答案 0 :(得分:1)
在你的情况下,我认为正确的方法应该是这样的。 (Tensorflow 版本 >= 2)
requests
您可以更改方法,例如,从 L2 到 L1,或者如果您想以自己的方式计算正则化器。 您可以自己自定义。请在此处查看示例。
Tensorflow 2 Developing new regularizers
但是如果你想使用 tf.keras.layers.ActivityRegularization 你可以使用如下
output = tf.keras.layers.Dense(units=NUM_OUTPUTS,
kernel_initializer=tf.keras.initializers.TruncatedNormal(mean=0., stddev=1.),
activity_regularizer=tf.keras.regularizers.L2(0.01))(dropout_dense1)