求导关键:

  1. 定义计算图
  2. 反向传播即调用 函数/变量.backward()
  3. 获得梯度,即变量名.grad

detach:固定网络参数

将该计算移动到记录的计算图外,因此对于u,u是x*x的值,是常量,因此z对x求导是u而不是1.Auto Grad - 图1

  1. y = x*x
  2. u = y.detach()
  3. z = u*x
  4. z.sum().backward() # 对于标量一般都是求完sum后再去求导
  5. x.grad == u