TensorFlow 2.5中kernel regularizer损失是否会自动纳入总损失?
关于Keras层内正则项损失计算的问题解答
核心结论
你不需要在model.compile()阶段手动给损失函数添加对应正则项,所有通过网络层参数声明的正则化损失都会被Keras自动加入总损失中参与计算。
补充说明
- 目前Keras支持三类在层内声明的正则项:
kernel_regularizer(权重核正则)、bias_regularizer(偏置正则)、activity_regularizer(层输出激活值正则),你声明的L1权重正则属于第一类,这三类正则项都会被Keras自动收集到model.losses属性中。 - 当你使用内置的
model.fit()方法训练时,框架会自动将所有收集到的正则损失求和,和你在compile中指定的主损失加总得到最终用于反向传播的总损失。 - 如果你自己实现自定义训练循环,不使用内置的
fit方法,则需要手动把sum(model.losses)的结果加到主损失上,自动累加的逻辑仅在内置训练流程中生效。 - 你可以在模型定义完成后打印
model.losses,查看所有被自动收集的正则损失项,验证配置是否生效。
内容的提问来源于stack exchange,提问作者Mastiff
相关产品推荐
相关产品推荐

