gpt4 book ai didi

python - 将 L1 损失稍微适应 Pytorch 中的加权 L1 损失,梯度计算是否仍能正常工作?

转载 作者:行者123 更新时间:2023-12-05 02:59:12 24 4
gpt4 key购买 nike

我在 Pytorch 中实现了一个神经网络,我想使用加权 L1 损失函数来训练网络。

具有常规 L1 损失的实现包含每个时期的代码:

optimiser.zero_grad()
net.train()
_,forecast = net(torch.tensor(feature, dtype=torch.float).to(DEVICE))
loss = F.l1_loss(forecast, torch.tensor(target,dtype=torch.float).to(DEVICE),reduction='mean')
loss.backward()
params.append(net.parameters())
optimiser.step()

现在我想改用加权 L1 损失。所以我想再次使用相同的标准 Pytorch L1 函数并使用权重重新调整预测和目标。梯度计算还能正确完成吗?

optimiser.zero_grad()
net.train()
_,forecast = net(torch.tensor(feature, dtype=torch.float).to(DEVICE))
loss = F.l1_loss(torch.t(torch.mul(torch.t(forecast),
torch.tensor(weight,dtype=torch.float).to(DEVICE))) ,
torch.t(torch.mul(torch.t(torch.tensor(target,dtype=torch.float).to(DEVICE)),
torch.tensor(weight,dtype=torch.float).to(DEVICE))),reduction='mean')
loss.backward()
params.append(net.parameters())
optimiser.step()

最佳答案

是的,这将是正确的。

如果您没有使用就地操作,梯度将被正确计算。此外,在当前版本的 Pytorch 中,如果您不小心将一些就地操作包含在程序中,将会报错。

这是一个相关的discussion .您可以在此处找到更多信息。

关于python - 将 L1 损失稍微适应 Pytorch 中的加权 L1 损失,梯度计算是否仍能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58200833/

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