为什么不将L2正则化添加回原始损失函数中?

Jon*_*han 2 computer-vision neural-network keras tensorflow

我知道当使用内核正则化器,尤其是l2 loss时,我应该将其重新添加到loss函数中,这是在其他帖子中所做的。但是,在Keras,他们没有遵循此过程。为什么会这样呢?

例如,考虑这个这个笔记本。他们在某些层级使用l2损失作为核心调节器,但并未加回到原始损失中。这是因为特定的损失,还是仅仅是Keras遵循的行为,还是我完全误解了一切?

nes*_*uno 6

Keras隐藏了很多复杂性(这并不总是一件好事)。

您正在使用Model抽象:此模型在内部包含有关体系结构和培训过程的所有必需信息。

当您调用该方法compiletraintrain_on_batch指定损失函数但在幕后时,会发生以下情况:

  • 实例化指定的损失函数(例如,分类交叉熵)
  • 从模型中获取所应用的正则化并将其全部添加到先前实例化的损失项中

您可以通过访问.losses模型实例的属性来查看将要添加到损失项中的操作(这是张量流操作的列表,通常是所有多重化操作,因为正则化在for中)regularization_strenght * norm_p(variable)