实例代码

我们先来看一个简单的代码:

1
2
3
4
5
6
import torch

x = torch.tensor([1.0, 2.0], requires_grad=True)
y = x**2
loss = y.mean()
loss.backward()

正向传播

  1. x = [1.0, 2.0]
  2. y = [1.0, 4.0]
  3. loss = (1.0 + 4.0) /2

反向传播

均值函数对于每一个元素的梯度为\(\frac{1}{n}\),其中n为元素个数。

  1. \(\partial loss / \partial y_i=1/n\),其中n=2
  2. \(\partial y_i / \partial x_i= 2*x_i\)
  3. 根据链式法则:\(\frac{\partial loss}{\partial x_i} = \frac{1}{2}*2*x_i=x_i\)