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
+----+
将影响A、B和Closs1
将影响A、B和Dloss2
对于输出C和输出D,keras将计算最终损耗F_损耗=w1*loss1+w2*loss2。然后,最终损耗F_损耗应用于输出C和输出D。最后来自输出C和输出D的反向传播使用相同的F_损耗进行反向传播。注意!!!来自文档:“如果模型有多个输出。。。然后,模型将最小化的损失值将是所有单个损失的总和(如合理),因此最终损失将影响所有损失