pytorch中关于梯度计算

本文介绍了PyTorch中的Autograd概念,包括叶子张量、梯度和梯度函数的细节。讨论了`torch.autograd.backward`函数的使用,以及如何保留计算图和创建高阶微分图。同时,还提到了使用`register_hook`注册钩子函数进行梯度计算的实例,以及如何通过自定义`Function`来定义复杂操作的梯度计算过程。

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

关于Autogrand的几个概念:

叶子张量 :可以理解为是一个初始变量,如下图所示,只有x为叶子节点,y和z都是结果节点。
pytorch中只能计算叶子节点的梯度(x)
在这里插入图片描述
grand VS grand_fn
grand : 该Tensor的梯度值,每次在计算backward时需要将前一时刻的梯度归零,否则梯度值会累加。
grand_fn :叶子节点通常为None,只有结果节点的grand_fn 才有效,用于指示梯度函数是哪种类型。

梯度函数:

torch.autograd.backward (tensors,grand_tensor = None,retain_graph = None, create_graph = False )

tensors : 用于计算梯度的tensor,torch.autograd.backward(x)== x.backward()

grand_tensor : 在计算矩阵的梯度时会用到,如果输出z是一个标量则不用传参,若z是矩阵则需要传参,shape一般需要和前面计算的tensors 保持一致。函数会自动把这个参数拉成一个行向量与求出的雅克比矩阵相称得到最后的梯度。详情可查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值