pytorch中的前向流传和反向流传

例如定义两个变量

import torcha = torch.tensor(1.0, requires_grad=True)b = torch.tensor(1.0, requires_grad=True)
  1. 正向流传就是按输出计算对应的输入
y = (a ** 2) * (b ** 3)z = y ** 100print(z)

打印失去

tensor(1., grad_fn=<PowBackward0>)
  1. 反向流传为 从输入往链式求导,直到计算到每个输出的偏导

例如z对a和b的偏导为

$$100 * (a^{2} * b^{2})^{99} * 2 * a * b^{3}$$

$$100 * (a^{2} * b^{2})^{99} * a^{2} * 3 * b^{2}$$

带入a和b的值1应该求出200 300,测试代码

z.backward()print(a.grad.data)print(b.grad.data)

打印后果为

tensor(200.)tensor(300.)