专栏名称: 机器学习初学者
号主黄博Github全球排名前90,3.6万Star!致力于为初学者提供学习路线和基础资料,公众号可以当作随身小抄,文章很全,建议收藏!点击菜单可以进入学习!
今天看啥  ›  专栏  ›  机器学习初学者

【深度学习】Pytorch里面多任务Loss是加起来还是分别backward?

机器学习初学者  · 公众号  ·  · 2024-08-08 12:00
    

文章预览

本文转载自 | 极市平台 作者 | 歪杠小胀@知乎 来源丨https://zhuanlan.zhihu.com/p/451441329 1 『记录写这篇文章的初衷』 最近在复现一篇论文的训练代码时,发现原论文中的总 loss 由多个 loss 组成。如果只有一个 loss ,那么直接 loss.backward() 即可,但是这里不止一个。一开始看到不止一个 loss 时,不知道将 backward() 放在哪里。 for  j  in  range(len(output)):     loss += criterion(output[j], target_var) 我们知道,一般传统的梯度回传步骤是这样的: outputs = model(images) loss = criterion(outputs,target) optimizer.zero_grad()   loss.backward() optimizer.step() 首先模型会通过输入的图像与标签计算相应的损失函数; 然后清除之前过往的梯度 optimizer.zero_grad() ; 进行梯度的回传,并计算当前的梯度 loss.backward() 反向传播,计算当前梯度; 根据当前的梯度来更新网络参数。一般来说是进来一 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览