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

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

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

相关推荐
机器之心9 小时前
不只DeepSeek,阶跃等开源JetSpec:大模型解码提速近10倍
人工智能·openai
moMo10 小时前
当LLM学会"递纸条",AI是如何调用工具的
人工智能
拾年27510 小时前
大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿
人工智能·深度学习·机器学习
拾年27510 小时前
从 Prompt 到 Context 再到 Harness:AI 工程化的三年三级跳
人工智能
小九九的爸爸10 小时前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
用户30904636139410 小时前
Claude 不会直接执行你的函数,它只会生成一段结构化的工具调用请求。真正执行函数、访问数据库、请求外部 API 的动作,必须由你的后端完成。
人工智能
不加辣椒10 小时前
第14章 Prompt 编排与优化技术
人工智能
Bolt10 小时前
读懂 Claude Code `/loop` 与编码 Agent 的循环革命
人工智能·程序员·agent
用户2080468045610 小时前
文本分块策略与最佳实践实战指南
人工智能