首先要知道向量链式法则
自动求导计算一个函数在指定值上的导数
区别于:
符号求导(给定函数求其导函数)和数值求导(不知道函数具体表达式)
自动求导的实现
计算y关于x的梯度前,需要一个地方存储梯度
x.requires_grad(True)
x.grad #默认值是None
通过调用反向传播函数自动计算y关于x每个分量的梯度
y.backward()
x.grad
需要注意的是:Pytorch会累积梯度,所以需要清除之前的值
x.grad.zero_()
即使构建函数的计算图需要通过Python控制流,我们仍可以得到变量的梯度