本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
本文讲解在因变量y为向量时,在pytorch中如何求y对自变量x的梯度
本节先梳理清晰什么是求向量的梯度
01. 什么是求向量的梯度
下面用一个例子进行说明什么是求向量的梯度
例子如下:
, 求 处的梯度
也就是求出每个对每个的偏导,即雅可比矩阵:
👉手动计算结果
下面先手动计算出雅可比矩阵的结果,过程如下:
由 和 得到
可知在处,
本节通过一个例子讲解pytorch如何求向量的梯度
01. pytorch求向量的梯度例子
当因变量y是向量时,在pytorch如何求y对x的梯度雅可比矩阵?
事实上,pytorch并不支持这样的计算结果,
也即在pytorch中不能求得雅可比矩阵,它只提供计算,其中是自行提供的一个向量
例如,我们提供,那么结果就是
代码与实现如下:
import torch
x = torch.tensor([1,2],dtype=(float),requires_grad=True) # 定义x,指明需要梯度(即x是参数)
A = torch.tensor([[2,3],[1,1]],dtype=(float)) # 常量A,不需梯度
y = A@(x*x) # 定义y
y.backward(torch.ones_like(y)) # 指明用y对自变量x求梯度,并提供一个v
print('x.grad:',x.grad) # 打印x的梯度
运行结果如下:
x.grad: tensor([ 6., 16.], dtype=torch.float64)
好了,以上就是在pytorch中如何计算向量的梯度的方法了~
End