如何扩展损失函数火炬

时间:2018-10-07 17:05:39

标签: 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中正确实现这种损失函数?

谢谢

1 个答案:

答案 0 :(得分:1)

您解决问题的方法似乎是正确的,但是您的代码中有错别字。这是针对此问题的解决方法:

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

final_loss = loss1 + loss2 + loss3

然后您可以在.backward上调用final_loss,然后应该计算梯度并反向传播它们。

此外,在训练过程中权重本身是学习的地方,也有可能权重每个分量损失。

您可以参考combine-multiple-criterions-to-a-loss-function的讨论以获取更多信息。