GitPedia

AutomaticWeightedLoss

Multi-task learning using uncertainty to weigh losses for scene geometry and semantics, Auxiliary Tasks in Multi-task Learning

From Mikoto10032·Updated June 11, 2026·View on GitHub·

A PyTorch implementation of Liebel L, Körner M. [Auxiliary tasks in multi-task learning](https://arxiv.org/pdf/1805.06334)[J]. arXiv preprint arXiv:1805.06334, 2018. The project is written primarily in Python, distributed under the Apache License 2.0 license, first published in 2020. Key topics include: auxiliary-tasks, deep-learning, multi-task, multi-task-learning, pytorch.

AutomaticWeightedLoss

A PyTorch implementation of Liebel L, Körner M. Auxiliary tasks in multi-task learning[J]. arXiv preprint arXiv:1805.06334, 2018.

The above paper improves the paper "Multi-task learning using uncertainty to weigh losses for scene geometry and semantics" to avoid the loss of becoming negative during training.

Requirements

  • Python
  • PyTorch

How to Train with Your Model

  • Clone the repository
bash
git clone git@github.com:Mikoto10032/AutomaticWeightedLoss.git
  • Create an AutomaticWeightedLoss module
python
from AutomaticWeightedLoss import AutomaticWeightedLoss awl = AutomaticWeightedLoss(2) # we have 2 losses loss1 = 1 loss2 = 2 loss_sum = awl(loss1, loss2)
  • Create an optimizer to learn weight coefficients
python
from torch import optim model = Model() optimizer = optim.Adam([ {'params': model.parameters()}, {'params': awl.parameters(), 'weight_decay': 0} ])
  • A complete example
python
from torch import optim from AutomaticWeightedLoss import AutomaticWeightedLoss model = Model() awl = AutomaticWeightedLoss(2) # we have 2 losses loss_1 = ... loss_2 = ... # learnable parameters optimizer = optim.Adam([ {'params': model.parameters()}, {'params': awl.parameters(), 'weight_decay': 0} ]) for i in range(epoch): for data, label1, label2 in data_loader: # forward pred1, pred2 = Model(data) # calculate losses loss1 = loss_1(pred1, label1) loss2 = loss_2(pred2, label2) # weigh losses loss_sum = awl(loss1, loss2) # backward optimizer.zero_grad() loss_sum.backward() optimizer.step()

Something to Say

Actually, it is not always effective, but I hope it can help you.

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub →

This article is auto-generated from Mikoto10032/AutomaticWeightedLoss via the GitHub API.Last fetched: 6/26/2026