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

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

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

相关推荐
土星云SaturnCloud1 分钟前
边缘计算赋能烟草行业数字化转型
服务器·人工智能·ai·边缘计算
算力视野8 分钟前
GPU、NPU、TPU有什么区别?
服务器·人工智能·gpu算力
Blb1236548 分钟前
介电击穿科普:交流击穿与直流击穿有何区别?
人工智能·功能测试·制造·材料工程
keyanbanyungong9 分钟前
没预实验怎么申课题?
人工智能·深度学习
lsdz00117 分钟前
C2/5T 德国HBM传感器 1-C2/5T
人工智能
贺国亚18 分钟前
Buy领域智能体-Spring-AI全量工程
java·人工智能·spring
段一凡-华北理工大学20 分钟前
工业领域的Hadoop架构学习~系列文章15:机器学习与大数据融合 - 工业智能的算法引擎
大数据·人工智能·hadoop·机器学习·架构·工业智能体·高炉炼铁智能化
一次旅行21 分钟前
AI技术热点简报
人工智能
至天22 分钟前
FastAPI 接入 FastAPI-Limiter 以及使用 Redis 进行限流指南
redis·python·fastapi·请求限流
一楼的猫23 分钟前
AI辅助长篇小说创作的“记忆崩坏“问题与结构管理策略
人工智能·学习·机器学习·chatgpt·ai作画·ai写作