在 Keras 中,对于密集层,我们可以使用参数 activity_regularizer。
在 Tensorflow 中,没有类似的参数。
凯拉斯:
from keras import regularizers
encoding_dim = 32
input_img = Input(shape=(784,))
# add a Dense layer with a L1 activity regularizer
encoded = Dense(encoding_dim, activation='relu', activity_regularizer=regularizers.l1(10e-5))(input_img)
decoded = Dense(784, activation='sigmoid')(encoded)
autoencoder = Model(input_img, decoded)
如何在 tensorflow 中制作一个activity_regularizer?
最佳答案
Keras 文档不太精确,但从我读过的内容来看,事件正则化只是将特定层的输出添加到模型的相应损失函数中的 L1 或 L2 项。
因此,假设您有一些损失,例如某些标签的 MSE:
loss = tf.metrics.mean_squared_error(labels, model_output)
要将 L1 事件正则化添加到某个层,您只需将该层的输出的 L1 正则化项添加到具有一定正则化强度的损失中(我将采用您的问题中给出的
10e-5
):loss += 10e-5*tf.nn.l1_loss(layer_output)
其中
layer_output
是您要调节的层的输出。如果你对层的权重而不是它的输出做同样的事情,你就会得到 Keras documentation 所谓的内核正则化。如果你对该层的偏置向量做同样的事情,你会得到 Keras 的偏置正则化。
关于python - TensorFlow 中的事件正则化器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50096891/