乐趣区

关于pytorch:pytorch学习笔记

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

例如定义两个变量

import torch

a = torch.tensor(1.0, requires_grad=True)
b = torch.tensor(1.0, requires_grad=True)
  1. 正向流传就是按输出计算对应的输入
y = (a ** 2) * (b ** 3)
z = y ** 100
print(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.)
退出移动版