案例: 演示自动微分的真实应用场景. 结论: 1. 先前向转播(正向传播) 计算出 预测值(z) 2. 基于损失函数, 结合 预测值(z) 和 真实值(y), 来计算 梯度. 3. 结合权重更新公式 w新 w旧 - 学习率 * 梯度, 来更新 权重. # 导包 import torch # 1. 定义x, 表示: 特征(输入数据), 假设: 2行5列, 全1矩阵. x torch.ones(2, 5) print(fx: {x}) # 2. 定义y, 表示: 标签(真实值), 假设: 2行3列, 全0矩阵. y torch.zeros(2, 3) print(fy: {y}) # 3. 初始化(可自动微分的)权重 和 偏置. w torch.randn(5, 3, requires_gradTrue) print(fw: {w}) b torch.randn(3, requires_gradTrue) print(fb: {b}) # 4. 前向转播(正向传播), 计算出 预测值(z). z torch.matmul(x, w) b # z x w b print(fz: {z}) # 5. 定义损失函数. criterion torch.nn.MSELoss() # neural network: 神经网络 loss criterion(z, y) # loss 损失 print(floss: {loss}) # 6. 进行自动微分, 求导, 结合反向传播, 更新权重. loss.backward() #如果loss算出来不是一个值那么需要写成loss.sum() # 7. 打印w, b 用来更新的梯度. print(fw的梯度: {w.grad}) print(fb的梯度: {b.grad}) # 后续就是: w新 w旧 - 学习率 * 梯度, 来更新 权重.