Python 如何扩展损失函数
我想创建自己的自定义损失函数,作为3个损失函数的加权组合,类似于: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中正确实现这种丢失功能 谢谢您处理问题
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
,然后它应该计算梯度并反向传播它们
此外,还可以在训练过程中自行学习权重的情况下,对每个组件损失进行加权
有关详细信息,请参阅的讨论