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

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

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

相关推荐
richard_first3 分钟前
Transformer 与大语言模型:第3章 输入是如何进入 Transformer 的
人工智能·深度学习·transformer
Metaphor69212 分钟前
使用 Python 读取和删除 Excel 文件属性
python·excel
樊小肆14 分钟前
DeepSeeker-Code源码导读11-统一注册表registry
人工智能·agent
鉴生Eric17 分钟前
从冷负荷预测到群控寻优:用 AI 智能体把中央空调能耗打下来 20%+ 的全链路实践
人工智能
水獭比特21 分钟前
工作流都公开了,为什么还不能继承 Owner 权限?
javascript·人工智能·node.js
不加辣椒24 分钟前
第 3 章 信任壁垒:为什么 AI 生成的代码不可直接信任
人工智能
toolsmith25 分钟前
我用AI拆解了Charles的授权机制,发现密钥被写死在了代码里
java·人工智能
小羊4327 分钟前
Agent规划范式进化论:从CoT到Plan-and-Execute
人工智能
AI探索派32 分钟前
Agent Teams和Agent Swarm是什么?多Agent协作原理实战拆解
人工智能·架构·agent
wizardpisces35 分钟前
Prompt 堆叠的尽头,是系统设计问题
人工智能