我知道,当使用内核正则化器,尤其是l2 loss时,我应该将其重新添加到loss函数中,这是在其他帖子中所做的。但是,在Keras,他们没有遵循此过程。为什么会这样呢?
例如,考虑使用this和this笔记本。他们在某些层级使用l2损失作为核心调节器,但并未加回到原始损失中。是因为特定的损失,还是仅仅是Keras遵循的行为?还是我完全误解了一切?
答案 0 :(得分:5)
Keras隐藏了很多复杂性(这并不总是一件好事)。
您正在使用Model
抽象:此模型在内部包含有关体系结构和培训过程的所有必需信息。
当调用方法compile
或train
或train_on_batch
时,您指定了损失函数,但实际上是这样:
您可以看到要访问模型实例的属性.losses
的损失项中要添加的操作(这是张量流操作的列表,通常是所有多重化操作,因为正则化位于为regularization_strenght * norm_p(variable)
。
答案 1 :(得分:1)
Keras中的L2正则化(或任何权重正则化)仍以与您期望的相同的方式添加到损失函数中。它只是在幕后发生,因此用户无需担心。
您链接的笔记本是在Keras中使用权重调整的正确方法。