`tf.keras.layers.ActivityRegularization`如何工作以及如何正确使用它?

时间:2018-05-31 18:45:06

标签: python tensorflow machine-learning keras deep-learning

在深度神经网络的训练中,如何使用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)),但它似乎没有任何效果。

1 个答案:

答案 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)