在pytorch中,用backward法自动求取梯度1、区分原始殷勤花瓣和结果殷勤花瓣2、backward (用法自动求取梯度2.1、结果殷勤花瓣为一维殷勤花瓣2.2、结果殷勤花瓣
1、区分源殷勤花瓣和结果殷勤花瓣x=torch.arange (-8.0,8.0,0.1,requires_grad=True ) y=x.relu )
x是殷勤的花瓣,根据源殷勤的花瓣x得到的殷勤的花瓣y,结果是殷勤的花瓣。
2、如何backward ) )方法自动求梯度标量调用backward ) )方法时,根据链式法则自动计算出出处殷勤的花瓣梯度值。
2.1、结果殷勤的花瓣是一维殷勤的花瓣,就是基于以上例子。 也就是说,将一维殷勤的花瓣y变换为标量后,通过调用backward ()方法,可以自动计算出x的梯度值。
那么,如何将一维殷勤的花瓣y变成标量呢?
一般来说,是通过将y.sum ()这一维殷勤的花瓣y相加来实现的。
一维殷勤花瓣是一个向量,将一维殷勤花瓣求和等于该向量点乘以等维单位向量,使用求和得到的标量y.sum()对源殷勤的花瓣x求导和y的每个元素对x的每个元素求导的结果相同
因此,代码应如下所示:
y.sum ().backward ) x.grad 2.2,结果表明殷勤的花瓣为二维殷勤的花瓣或更高维的殷勤的花瓣。 结果变量y可能是二维殷勤花瓣或更高维殷勤花瓣。 在这种情况下,一般的点乘可以理解为等维单位的殷勤花瓣。 (点乘是向量中的概念,如此记述
y.Backward(Torch.Ones_like(y ) ) grad_Tensors=Torch.Ones_like ) y ) x.grad参见Pytorch autograd,backward