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

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

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

相关推荐
0思必得01 分钟前
[Web自动化] Requests模块响应的内容
运维·前端·python·自动化·html·web自动化
小王毕业啦5 分钟前
2011-2022年 国内光伏电站遥感矢量数据
大数据·人工智能·数据挖掘·数据分析·数据统计·社科数据·实证数据
XLYcmy6 分钟前
高级密码猜测生成器AdvancedPasswordGenerator密码生成器程序详细分析
开发语言·python·算法·网络安全·开发工具·源代码·口令安全
才不做选择9 分钟前
基于 YOLOv8 的水果智能识别系统
python·yolo·目标检测·机器学习·计算机视觉
Deepoch23 分钟前
智能赋能新范式:Deepoc开发板重塑仓储物流产业生态
人工智能·具身模型·deepoc·物流机器人
the4thone1 小时前
AI基础 笔记
人工智能·笔记
Edward.W1 小时前
Python实现人物剪影转ASCII艺术生成器
开发语言·python
天天进步20151 小时前
Python全栈项目--校园智能停车管理系统
开发语言·python
盼哥PyAI实验室1 小时前
我用 Coze + Python,从 0 搭了一个“能真正用”的 AI 律师函系统
开发语言·人工智能·python
jimmyleeee1 小时前
人工智能基础知识笔记三十一:Langfuse的几种tracing的方法
人工智能·笔记