自动求导:计算一个函数在指定值上的导数
2.1初始化变量及函数
import torch
x=torch.arange(4.0,requires_grad=True)
y=2*torch.dot(x,x)
2.2反向传播求梯度
y.backward()
x.grad
2.3梯度清零
pytorch中梯度会进行累加,所以在进行下一次反向传播前,需要将梯度清零
#%%
x.grad.zero_()
y=x.sum()
y.backward()
x.grad
#%%
2.4特殊情况
有时需要将某个数视为常数,不参与方向传播的过程,即不作为链式法则的中间变量,此时可以通过detach()函数
实现
此时,y是x的函数,u只是一个常数,并不是x的函数,因此可以求y关于x的导数