从零实现线性回归
手工构建前向计算、均方误差、反向传播与参数更新。
完整路径
import tensorplay as tp
X = tp.randn(100, 1)
y = 3 * X + 2 + tp.randn(100, 1) * 0.1
w = tp.randn(1, 1, requires_grad=True)
b = tp.zeros(1, requires_grad=True)
for step in range(100):
y_pred = X @ w + b
loss = ((y_pred - y) ** 2).mean()
loss.backward()
with tp.no_grad():
w -= 0.01 * w.grad
b -= 0.01 * b.grad
w.grad.zero_()
b.grad.zero_()你会理解
- requires_grad 如何开启追踪。
- loss.backward() 如何触发反向传播。
- tp.no_grad() 如何隔离参数更新。
- 为什么每轮更新后必须清空梯度。
