我逐渐从只使用Tensorflow切换到Tensorflow+Keras。目前,我仍在使用tensorflow优化器进行训练,但使用的是Keras的Dense
层。例如,
model.add(Dense(hidden_width, kernel_regularizer=regularizers.l2(0.01)))
我如何从密集的Keras层中检索所有的l2惩罚,以便将它们添加到我的总体损失函数中?
在我使用Keras之前,我经常
reg_losses = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
loss = recon_loss + sum(reg_losses)
但是现在我在密集层中使用了Keras,tf.GraphKeys.REGULARIZATION_LOSSES
是空的。
发布于 2019-04-12 09:00:06
所有正则化器都以相同的模板{weight|bias|activation}_regularizer
命名。您可以尝试通过过滤模型的损失来检索它们:
model = Model(...)
reg_losses = [l for l in model.losses
if 'regularizer' in l.name]
loss = recon_loss + sum(reg_losses)
https://stackoverflow.com/questions/45600249
复制相似问题