gpt4 book ai didi

machine-learning - Pytorch 中多输出模型的丢失

转载 作者:行者123 更新时间:2023-11-30 09:24:28 25 4
gpt4 key购买 nike

我在 PyTorch 中有一个多输出模型,当我使用相同的损失训练它们时,然后反向传播,我结合了两个输出的损失,但当一个输出损失减少时,其他输出损失增加,依此类推。我该如何解决这个问题?

def forward(self, x):
#neural network arch. forward pass
x = dense1(x)
x1 = dense2(x)
x2 = dense2(x)
x1 = F.log_softmax(x1)
x2 = F.log_softmax(x2)
return x1, x2

out1, out2 = model(data)
loss1 = NLLL(out1, target1)
loss2 = NLLL(out2, target2)
loss = loss1 + loss2
loss.backward()

当loss1减少时,loss2增加,当loss2减少时,loss1增加,我该如何解决这个问题。除了“+”之外,是否可以使用任何其他运算符来合并损失,或者我应该对不同的损失赋予权重?

最佳答案

如果您有两个不同的损失函数,并且分别完成这两个函数的转发,那么明智的做法是

(loss1 + loss2).backward() 

这在计算上是高效的。

你应该实现的是让你的模型学习,如何最小化损失。您的示例中的某些代码不存在,但您应该有 nn.Module,可能是您的自定义模块,其中包含应该学会降低损失的参数。

我喜欢你对 loss = loss1 + loss2 求和的方法。

关于machine-learning - Pytorch 中多输出模型的丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56847807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com