Pytorch里面参数更新前为什么要梯度手动置为0?

因为在一般情况下,每次minibatch之后,都会计算得到一个loss,进而计算该loss关于全局参数的梯度。如果在下一次minibatch 进入模型,计算得到相应的loss和梯度之前,不对优化器的梯度进行置0操作,那么几次batch的梯度会有一个累积效应,影响模型参数的优化。

在每一次batch'训练完之后,计算得到loss损失函数和相应梯度,都会对模型参数进行调整,那么该batch数据在这一轮训练里面的作用已经完成了。我们不希望这些优化过模型参数的batch的loss梯度累积起来,继续对模型参数优化产生影响。

相关推荐
Daydream.V几秒前
Opencv——轮廓有关操作
人工智能·opencv·计算机视觉
weiyvyy2 分钟前
机器人数学基础补充
人工智能·决策树·机器学习·机器人·嵌入式软件开发·机器人嵌入式开发
一知半解仙3 分钟前
AI加持下的IDEA让Java开发更高效
java·人工智能·intellij-idea
2401_865854883 分钟前
腾讯云龙虾大模型API配置:一键解锁AI算力,赋能业务高效升级
大数据·人工智能·腾讯云
justtoomuchforyou4 分钟前
deepseek- 上千种类别如何image classification
python
IT_陈寒5 分钟前
JavaScript性能翻倍的5个隐藏技巧,90%的开发者都不知道!
前端·人工智能·后端
brooknew6 分钟前
Opencv的findcontours函数的大坑
人工智能·opencv·计算机视觉
墨染天姬6 分钟前
【AI】什么是MOE混合专家模型?
人工智能
甲枫叶7 分钟前
【openclaw】我用 OpenClaw 自动化了这些工作
java·python·自动化·ai编程
无忧智库7 分钟前
全场景 AI 智能体落地指南:基于 OpenClaw 的超级个体进阶手册:第三阶段:进阶篇
人工智能