【问题标题】:How does Keras compute the loss among multiple outputs with the same loss function? Does it sum them up or make an average?Keras 如何计算具有相同损失函数的多个输出之间的损失?它是总结还是平均?
【发布时间】:2019-12-04 11:38:30
【问题描述】:

我在 R 中使用 Keras,其文档指定:

如果模型有多个输出,您可以通过传递字典或损失列表对每个输出使用不同的损失。模型将最小化的损失值将是所有单个损失的总和。

如果我有多个输出但应用了相同的损失函数,Keras 仍然会对它们求和,还是会进行其他转换,例如平均?

【问题讨论】:

    标签: r keras


    【解决方案1】:

    它始终是各个损失项的总和,但它是一个加权和,并且每个损失都有一个权重,因此您可以通过设置正确的权重来实现平均。

    需要加权,因为每个任务(输出)可能对正在优化的最终损失具有不同的范围和重要性。

    【讨论】:

    • 谢谢大家的回答,默认权重是多少?因为我没有在我的模型中指定权重
    • @N.M.每个损失默认为 1.0。
    【解决方案2】:

    按照@Matias Valdenegro 的回答,您可以在 Keras model.compile(loss_weights={'output_name': loss_weight}) 中为每个损失项配置 loss_weight

    例如:你有你的损失函数:L = λ1*L1 + λ2*L2 + λ3*L3
    然后在 keras 中配置:
    model.compile(loss_weights={'output1_name': λ1, 'output2_name': λ2,'output2_name': λ3})

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2021-10-24
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多