首页 > 编程知识 正文

pytorch自动求导,vector iterator

时间:2023-05-06 06:51:48 阅读:161766 作者:2692

autograd是Pytorch的重要部分,位于vector-Jacobian product更是其中重点

以三维向量值函数为例。

用Tensor,Element-Wise机制进行运算,实际上表示:

y相对于x的导数不是2X,而是Jacobian矩阵。 (因为x,y是向量,不是一维实数) ) :

其中,不仅是关于x1,还有关于的函数。 这里的特殊性源于Element-Wise运算机制。 同样是y2、y3

另外一方面,对d(y )各成分的导数(变化率)是各成分函数、y=1、2、3对的偏导数

v沿一个方向的累积,一般来说,v的缺省方向为。

也可以向各个方向传达。 这是官方文档主张的easy feed external gradient。

这里,给出的偏导数是3358www.Sina.com/v方向上的向量

也可以理解为,每个分量函数都是用于偏导数的投影

v确定后,权重每个也确定了,同上。

权重

一---简单的隐式Jacobianx=Torch.randn(3,requires_grad=True ) xtens or ([-0.9238,0.4353,-1.3626], requires _ grad=true (y=x * * 2y.backward (torch.ones (3) ) x.grad tensor ([-1.8476,0.8706, -2.7252] ) xradtensor () ) ) requires_grad=True----Jacobian验证x1=torch.tensor(1,requires_grad=true ) dtype=torch.float ) x2=type=torch.float (x3=torch.tensor ) 3、requires_grad=True, type=torch.float (y=torch.randn (3) # producearandomvectorforvectorfunctiondefiney (0)=x1 * *2* x2x3# define 3y.backward(torch.ones )3) ) x1.gradtensor(5)5.gradtensor ) ) x2.gradtensord

各成分函数分别为:

投影方向:

代码的结果和分析相互印证

三---不同方向投影先分析:

重新编码验证:

x1=torch.tensor(1,requires_grad=True,dtype=torch.float ) x2=torch.tensor(2) 2,requires_grad=True dtype=torch.float (y=torch.randn )3) y )0)=x1**2*x2x3y )1)=x1x2* *3* * dype=torch.float (y.bat )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。