AI深度学习/PyTorch/反向传播与梯度下降

张开发
2026/6/3 5:50:03 15 分钟阅读
AI深度学习/PyTorch/反向传播与梯度下降
AI深度学习/PyTorch/反向传播与梯度下降 龙文浩 工程师的学术研究 2026/4/4import torchdef lwh_backward_grad():“”前向传播 特征x * 权重w 偏置b → 预测值z反向传播 预测值z → 损失函数 → 损失值loss → 更新权重w 、 偏置b本案例简化为单变量w损失函数 loss 2 * w²演示单次前向反向传播“”# 1. 定义可训练参数权重w # requires_gradTrue开启自动求导PyTorch会记录该张量的计算图用于反向传播# dtypetorch.float32指定数据类型为32位浮点数符合深度学习常规w torch.tensor(data10, requires_gradTrue, dtypetorch.float32)# 学习率 lr控制每次梯度下降的步长步长太大易震荡太小收敛慢 lr 0.1 # 2. 前向传播计算损失 # 定义损失函数loss 2 * w² # 这一步会构建计算图记录w到loss的计算路径 loss 2 * w ** 2 # 3. 反向传播自动求导 # loss.sum()将标量损失转为可反向传播的标量本案例loss本身是标量sum()为兼容写法 # backward()自动从loss反向传播计算所有requires_gradTrue的张量的梯度 # 梯度计算d(loss)/d(w) d(2w²)/dw 4ww初始为10所以梯度为4*1040 loss.sum().backward() # 4. 梯度下降更新权重 # w.data直接访问张量的数值不参与计算图避免影响梯度 # w.grad反向传播后得到的梯度值导数 # 更新公式w_new w_old - lr * gradient梯度下降核心公式 w1 w.data - lr * w.grad # 5. 结果打印 print(f初始权重w: {w.data.item()}) print(f损失函数loss: {loss.item()}) print(f反向传播计算的梯度w.grad: {w.grad.item()}) print(f学习率lr: {lr}) print(f反向传播后的权重值w: {w1.item()})执行函数lwh_backward_grad()

更多文章