关于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 保持一致。函数会自动把这个参数拉成一个行向量与求出的雅克比矩阵相称得到最后的梯度。详情可查看文章https://www.cnblogs.com/JeasonIsCoding/p/10164948.html
retain_graph :通常在调用一次backwa

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

被折叠的 条评论
为什么被折叠?



