Pytorch教程

【介绍】关于pytorch的向量求梯度

作者 : 老饼 发表日期 : 2023-07-28 10:53:16 更新日期 : 2024-06-24 15:28:28
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com




本文讲解在因变量y为向量时,在pytorch中如何求y对自变量x的梯度





 一、 什么是求向量的梯度    



本节先梳理清晰什么是求向量的梯度



01. 什么是求向量的梯度


下面用一个例子进行说明什么是求向量的梯度


例子如下:


, 求 处的梯度
也就是求出每个对每个的偏导,即雅可比矩阵:   


👉手动计算结果

下面先手动计算出雅可比矩阵的结果,过程如下:
 
由                       和  得到 

可知在处,  




 二、 pytorch求向量的梯度    



本节通过一个例子讲解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 





联系老饼