【从零开始学pytorch深度学习架构】第三课反向传播
·
目录
1.反向传播基础概念
- 链式法则定义与公式表达:反向传播算法的数学基础就是链式法则,用于高效计算深层神经网络中各层参数的梯度。对于多层复合(如 y=f(g(h(x)))),法则可扩展为 “从外到内逐层求导,再依次相乘”:

- 模型学习过程:

- 学习过程详细讲解:反向传播是梯度下降(朝着最优参数的方向)来实现参数优化的前提。先计算再更新;从模型构建角度,我们最终要求的是
、
。 - 应用场景:回归任务、二分类/多分类任务。
2.完整模型构建步骤
- 使用pytorch并定义 loss和
forward方法:import torch x_data = [1.0, 2.0, 3.0] y_data = [2.0, 4.0, 6.0] w = torch.Tensor([1.0]) # 初始化随机权重张量 w.requires_grad = True # 1开启梯度追踪,自动计算梯度 def forward(x): return x * w # 前向传播:预测值 = 输入x * 权重w def loss(x, y): y_pred = forward(x) return (y_pred - y) ** 2 # 计算损失(MSE的单个样本形式) # 训练前预测 print("predict (before training)", 4, forward(4).item()) # 训练循环(100轮) for epoch in range(100): for x, y in zip(x_data, y_data): l = loss(x, y) # 计算单个样本的损失 l.backward() # 反向传播,计算w的梯度 print('\tgrad:', x, y, w.grad.item()) # 打印当前梯度 # 更新权重(用.data避免梯度追踪) w.data = w.data - 0.01 * w.grad.data w.grad.data.zero_() # 2清空梯度(避免累积) # 每轮结束后打印当前损失 print("progress:", epoch, l.item()) # 训练后预测 print("predict (after training)", 4, forward(4).item())
3.代码结果
扩展:反向传播≠梯度下降,不明白的同学回顾【从零开始学pytorch架构】第二课梯度下降
- 反向传播方向既定;
- 梯度下降是朝着最优参数的方向,w增大或者缩小是根据导数的正负决定的。
更多推荐

所有评论(0)