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

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

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

相关推荐
阿里云大数据AI技术几秒前
息壤开物 × 阿里云:为具身智能造一座"会生长的数据工厂"
人工智能
码流子7 分钟前
AI稽核精灵-Agent落地
大数据·人工智能·物联网·算法·系统架构
千里码aicood28 分钟前
基于DCGAN的手写体文字生成系统设计与实现
人工智能
happylifetree33 分钟前
Python01-08:练习
python
空奈qwq37 分钟前
ANN 全连接神经网络入门指南:从神经元到深度学习的第一步
人工智能·python·深度学习·神经网络·算法·机器学习
weixin_4462608540 分钟前
SeLATM:面向数据探索与资源效率的片段级智能体主题建模
人工智能
scaryFann43 分钟前
企业 AI 进入费控系统的权限与安全设计:从权限交集到端到端工作流
人工智能·安全
袁俪1 小时前
检索增强生成
人工智能
LX567771 小时前
制造业学RAG,核心不是聊天是传承
人工智能
CAE虚拟与现实1 小时前
PyTorch和scikit-learn的区别
人工智能·pytorch·scikit-learn