gpt4 book ai didi

python - 在 Pytorch 中优化具有多任务目标的神经网络

转载 作者:行者123 更新时间:2023-11-30 21:54:34 26 4
gpt4 key购买 nike

在深度学习中,您通常有一个希望优化的目标(例如图像识别)。然而,在我的领域(自然语言处理),我们看到了多任务训练的兴起。例如,在单个系统中的下一个句子预测和句子分类。

我了解如何构建前向传递,例如用于分类任务 (obj1) 和回归任务 (obj2)

class Net(nn.Module):
def __init__():
super().__init__()
self.linear = Linear(300, 200)
self.obj1 = Linear(200, 5)
self.obj2 = Linear(200, 1)

def forward(inputs):
out = self.linear(inputs)
out_obj1 = self.obj1(out)
out_obj2 = self.obj2(out)
return out_obj1, out_obj2

但问题就变成了,如何优化这一点。您是否分别对这两个损失进行向后传递?或者将它们减少为单一损失(例如总和、平均值)?是否有一种通常用于多任务学习的方法?

为了跟进这一点,也许有人甚至会认为不同层的参数需要不同的优化器。在这种情况下,我认为损失必须单独处理。

最佳答案

更简单,你可以同时优化所有变量,没有问题。只需使用各自的标准计算两个损失,然后将它们添加到单个变量中即可:

total_loss = loss_1 + loss_2

并在这个总损失(仍然是张量)上调用.backward(),对于两者来说都效果很好。您还可以对损失进行加权,以更加重视其中一个而不是另一个。

检查PyTorch forums了解更多信息。

关于python - 在 Pytorch 中优化具有多任务目标的神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58977601/

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