首页 > 解决方案 > 如何在 Keras 或 Tensorflow 中将 L1 范数添加到损失函数中?

问题描述

我正在尝试重现深度学习论文的实验结果,

我注意到损失函数,类别交叉熵有一个 L1 正则化,如下所示,

在此处输入图像描述

那么,如何计算模型复杂度并在 Keras/Tensorflow 中添加正确的自定义损失函数?

标签: pythontensorflowmachine-learningkerasdeep-learning

解决方案


这只是一个规范,可能不一定是 1-规范。然而,在 tensorflow 中,如果您将参数存储在一个列表中(我将其称为 para_list),这将非常简单:

l1_reg_term = sum([tf.reduce_sum(tf.abs(_var)) for _var in para_list])
reg_loss = loss + alpha * l1_reg_term

获取参数的一种方法是命名它们。然后,您可以使用 tf.get_global_variables() 或 tf.get_trainable_variables() 从全局空间中提取它们。


推荐阅读