02-05自动微分
2.5 自动微分
1. 一个简单的例子
import torch x = torch.arange(4.0) y = 2 * torch.dot(x, x) y.backward() x.grad x.grad.zero_() # 在默认情况下,PyTorch会累积梯度,我们需要清除之前的值 y = x.sum() y.backward() x.grad
2. 分离计算
# y是作为x的函数计算的,而z则是作为y和x的函数计算的 x.grad.zero_() y = x * x u = y.detach() # 分离y来返回一个新变量u,该变量与y具有相同的值,但丢弃计算图中如何计算y的任何信息。换句话说,梯度不会向后流经u到x z = u * x z.sum().backward() # 计算z=u*x关于x的偏导数,同时将u作为常数处理,而不是计算z=x*x*x关于x的偏导数 x.grad == u x.grad.zero_() y.sum().backward() x.grad == 2 * x
分类:
动手学深度学习Pytorch版
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~