Keras如何计算具有相同损失函数的多个输出之间的损失?它是对它们求和还是求平均值?

时间:2019-07-26 07:01:36

标签: r keras

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

  

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

在我有多个输出但应用了相同损失函数的情况下,Keras仍将它们求和还是进行另一次转换(例如平均值)?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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