Python 如何扩展损失函数

Python 如何扩展损失函数,python,deep-learning,mathematical-optimization,pytorch,loss-function,Python,Deep Learning,Mathematical Optimization,Pytorch,Loss Function,我想创建自己的自定义损失函数,作为3个损失函数的加权组合,类似于: criterion = torch.nn.CrossEntropyLoss(out1, lbl1) + \ torch.nn.CrossEntropyLoss(out2, lbl2) + \ torch.nn.CrossEntropyLoss(out3, lbl3) 我这样做是为了解决一个多类多标签分类问题。 这有意义吗?如何在Pytorch中正确实现这种丢失功能 谢谢您处理问题

我想创建自己的自定义损失函数,作为3个损失函数的加权组合,类似于:

criterion = torch.nn.CrossEntropyLoss(out1, lbl1) + \
            torch.nn.CrossEntropyLoss(out2, lbl2) + \
            torch.nn.CrossEntropyLoss(out3, lbl3)
我这样做是为了解决一个多类多标签分类问题。 这有意义吗?如何在Pytorch中正确实现这种丢失功能


谢谢

您处理问题的方法似乎是正确的,但您的代码中有一个输入错误。这里有一个解决方案:

loss1 = torch.nn.CrossEntropyLoss()(out1, lbl1)
loss2 = torch.nn.CrossEntropyLoss()(out2, lbl2) 
loss3 = torch.nn.CrossEntropyLoss()(out3, lbl3)

final_loss = loss1 + loss2 + loss3
然后您可以调用
final_loss
上的
.backward
,然后它应该计算梯度并反向传播它们

此外,还可以在训练过程中自行学习权重的情况下,对每个组件损失进行加权

有关详细信息,请参阅的讨论