在Keras中,对于密集层,我们可以使用参数activity_regularizer。 在Tensorflow中,没有类似的参数。
Keras:
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?
答案 0 :(得分:4)
Keras文档不太精确,但从我所读的活动中,正则化只是一个L1或L2项,用于添加到模型的相应损失函数的特定层的输出。
所以,让我们说你有一些损失,例如某些标签的MSE:
loss = tf.metrics.mean_squared_error(labels, model_output)
要将L1活动正则化添加到某个图层,您只需将该图层输出的L1正则化项添加到您的损失中,并使用一些正则化强度(I' ll 10e-5
就像您的问题中给出的那样):
loss += 10e-5*tf.nn.l1_loss(layer_output)
layer_output
是您要监管的图层的输出。
如果您对图层的权重而不是其输出执行相同的操作,那么Keras documentation会调用内核正则化。如果对该层的偏置矢量执行相同操作,则会得到Keras的偏差正则化。
答案 1 :(得分:2)
tf.keras
中实现了Keras API,因此从技术上讲,如果它在Keras中定义,它应该是/应该是张量流。tf.layer.Dense
在其构造函数中包含kernel_regularizer
和bias_regularizer
个参数。10e-5
因子)。