我正在尝试重现一篇深度学习论文的实验结果,
我注意到损失函数类别交叉熵有一个L1正则化,如下所示,
那么,如何计算模型复杂度并在Keras/Tensorflow中添加正确的自定义损失函数呢?
回答:
那只是一个范数,不一定是1-范数。尽管如此,如果你在列表中存储了你的参数(我将它称为para_list),在tensorflow中这非常简单:
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()从全局空间中提取它们。