backward()函数中的参数解析

PyTorch的Backward()函数用于计算梯度,其参数可以是外部梯度,用于终止链式法则。雅可比矩阵在此过程中扮演关键角色,表示两个向量的偏导数。向后图在前向传播时自动创建,Backward函数不构造整个雅可比矩阵,而是直接计算Jacobian Vector Product以提高效率。向量v作为损失关于输出的梯度,与雅可比矩阵相乘得到损失关于权重的梯度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Backward()函数

Backward函数实际上是通过传递参数(默认情况下是1x1单位张量)来计算梯度的,它通过Backward图一直到每个叶节点,每个叶节点都可以从调用的根张量追溯到叶节点。然后将计算出的梯度存储在每个叶节点的.grad中。请记住,在正向传递过程中已经动态生成了后向图。backward函数仅使用已生成的图形计算梯度,并将其存储在叶节点中。

让我们分析以下代码:

 import torch
 # Creating the graph
 x = torch.tensor(1.0, requires_grad = True)
 z = x ** 3
 z.backward() #Computes the gradient
 print(x.grad.data) #Prints '3' which is dz/dx

需要注意的一件重要事情是,当调用z.backward()时,一个张量会自动传递为z.backward(torch.tensor(1.0))torch.tensor(1.0)是用来终止链式法则梯度乘法的外部梯度。这个外部梯度作为输入传递给MulBackward函数,以进一步计算x的梯度。传递到.backward()中的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiangyong58

喝杯茶还能肝到天亮,共同进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值