pytorch中的前向流传和反向流传
例如定义两个变量
import torcha = torch.tensor(1.0, requires_grad=True)b = torch.tensor(1.0, requires_grad=True)
- 正向流传就是按输出计算对应的输入
y = (a ** 2) * (b ** 3)z = y ** 100print(z)
打印失去
tensor(1., grad_fn=<PowBackward0>)
- 反向流传为 从输入往链式求导,直到计算到每个输出的偏导
例如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.)