Ваш подход к проблеме кажется правильным, но в вашем коде есть опечатка.Вот исправление для этого:
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
, что должно затем вычислить градиенты и распространить их обратно.
Также возможно вес каждый из потерь компонентов, где веса сами по себе изучены в процессе обучения.
Вы можете сослаться на обсуждения объединить-несколько-критерии к потере-функции для получения дополнительной информации.