Deep learning keras如何处理多重损失?

Deep learning keras如何处理多重损失?,deep-learning,keras,backpropagation,loss-function,Deep Learning,Keras,Backpropagation,Loss Function,如果我有类似于: model=model(输入=输入,输出=[y1,y2]) l1=0.5 l2=0.3 compile(损失=[loss1,loss2],损失权重=[l1,l2],…) Keras如何处理损失以获得最终损失? 是不是有点像: final_loss=l1*loss1+l2*loss2 还有,在训练期间这意味着什么?loss2是否仅用于更新y2所在层的权重?还是用于模型的所有层?来自: 损失:字符串(目标函数名称)或目标函数。见损失。如果模型有多个输出,可以通过传递字典或损失列

如果我有类似于:

model=model(输入=输入,输出=[y1,y2])
l1=0.5
l2=0.3
compile(损失=[loss1,loss2],损失权重=[l1,l2],…)
Keras如何处理损失以获得最终损失? 是不是有点像:

final_loss=l1*loss1+l2*loss2
还有,在训练期间这意味着什么?loss2是否仅用于更新y2所在层的权重?还是用于模型的所有层?

来自:

损失:字符串(目标函数名称)或目标函数。见损失。如果模型有多个输出,可以通过传递字典或损失列表,在每个输出上使用不同的损失。然后,模型将最小化的损失值将是所有单个损失的总和

损失权重:可选列表或字典,指定标量系数(Python浮点)以对不同模型输出的损失贡献进行加权。然后,模型将最小化的损失值将是所有单个损失的加权和,通过
损失权重
系数进行加权。如果是列表,则预期它与模型的输出具有1:1的映射。如果是张量,则需要将输出名称(字符串)映射到标量系数

因此,是的,最终损失将是“所有单个损失的加权总和,由
损失权重
系数加权”

你可以查一下电话号码

还有,在训练期间这意味着什么?loss2是否仅用于更新y2所在层的权重?还是用于模型的所有层

权重将通过更新,因此每个损失将仅影响将输入连接到损失的层

例如:

                        +----+         
                        > C  |-->loss1 
                       /+----+         
                      /                
                     /                 
    +----+    +----+/                  
 -->| A  |--->| B  |\                  
    +----+    +----+ \                 
                      \                
                       \+----+         
                        > D  |-->loss2 
                        +----+         
  • loss1
    将影响A、B和C
  • loss2
    将影响A、B和D

对于要反向传播的多个输出,我认为这不是Fábio Perez提到的完整答案。

还有,在训练期间这意味着什么?损失2是否仅用于 更新y2所在层的权重?或者它是用来 所有模型的层


对于输出C和输出D,keras将计算最终损耗F_损耗=w1*loss1+w2*loss2。然后,最终损耗F_损耗应用于输出C和输出D。最后来自输出C和输出D的反向传播使用相同的F_损耗进行反向传播。

注意!!!来自文档:“如果模型有多个输出。。。然后,模型将最小化的损失值将是所有单个损失的总和(如合理),因此最终损失将影响所有损失