pytorch 如何训练多重损失的权重?

pod7payv  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(134)

我有一个由多个损失组成的加权损失来训练我的模型。

loss = w1 * loss1 + w2 * loss2 + w3 * loss3
loss.backward()

字符串
有没有可能让w1,w2和w3参数可学习的方法?我尝试在模型中使用self.w1 = nn.Parameter(torch.tensor(0.33), requires_grad=True)初始化它们,但是在一次迭代之后,它的值变成了nan
当我们想要使权重可学习时,还有其他问题需要考虑,例如,为了使损失为零,什么阻止它们变为零甚至变为负值,我们如何确保权重不会只集中在一个损失上。
有没有一种方法可以让这些权重变得可学习,而不是手动调整权重?

idv4meu8

idv4meu81#

你不能在同一个过程中学习损失权重。权重将变为零(甚至负数)。损失权重是必须在外部设置的超参数。
如果你想要一个学习过程来设置损失权重,它必须是围绕模型训练过程的外循环。
你可以在多任务学习中研究损失加权来了解更多。

相关问题