当前位置: 首页 > news >正文

【刘二大人】《PyTorch深度学习实践》——反向传播代码(自用)

反向传播

使用反向传播的原因:

利用梯度下降来找到最优的权重,需要计算梯度,而计算每个中间结果的梯度又想当繁琐,所以利用反向传播的方式来取得最终值对于权重的梯度。

反向传播过程:

前向计算每个中间结果节点的梯度,前向传播生成计算图,然后利用链式法则,反向将最终结果关于权重的梯度表示出来。

代码来源:https://blog.csdn.net/qq_39804263/article/details/139685123?fromshare=blogdetail&sharetype=blogdetail&sharerId=139685123&sharerefer=PC&sharesource=m0_63829662&sharefrom=from_link

仅添加部分注释

代码如下:

# 如果是复杂的网络,没办法都自己写gradient的计算。 import torch import matplotlib.pyplot as plt 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 def forward(x, w): return x * w def loss(x, y, w): y_pred = forward(x, w) loss = (y - y_pred) ** 2 return loss print('predict (before training)', 4, forward(4, w.item())) epoch_list = [] loss_list = [] for epoch in range(100): for x, y in zip(x_data, y_data): l = loss(x, y, w) l.backward() print('\tgrad:', x, y, w.grad.item()) w.data = w.data - 0.01 * w.grad.data #w.grad是张量tensor,w.grad.data是标量 w.grad.data.zero_() # 对梯度进行清零,否则梯度会进行累加 print('process:', epoch, l.item()) epoch_list.append(epoch) loss_list.append(l.item()) print('predict (after training)', 4, forward(4, w)) plt.plot(epoch_list, loss_list) plt.xlabel('epoch') plt.ylabel('loss') plt.show()

【注意点】

(1)w.grad是张量,而w.grad.data是标量。张量w包含data和grad的,grad也是一个张量,grad.data才是它的标量值。

(2)每一个样本进行权重更新时,最后都需要将梯度值清零,利用w.grad.data.zero_(),不然,梯度值会累加到下一个样本梯度值中。

运行结果:

http://www.jsqmd.com/news/453840/

相关文章:

  • 导师推荐 9个AI论文软件:自考毕业论文+开题报告写作全测评
  • 解读代码Dftpav-main(3.1规划核心traj_server_ros.cpp26.3.8)
  • Linux:网络编程-基于HTTP协议的天气预报查询系统开发详解
  • Kafka自动提交把消息吃了:一次“已提交未处理”+重平衡导致丢数和爆堆积
  • 把 AI助手搬进飞书!OpenClaw接入完整指南
  • 2026广州GEO优化公司排名TOP5|本地实力派盘点,亚森SEO稳居榜首!
  • 周红伟:2026年OpenClaw最佳实践:一键部署+免费API配置+集成8大股票分析Skills及避坑指南
  • matlab麻雀搜索算法(SSA)优化BP神经网络,权值和阈值,一个压缩包共三个文件,包括有数...
  • 深度学习在财务报表舞弊识别中的应用:构建一个智能审计助手
  • Rokid UXR 的手势追踪虚拟中更真实的手实战开发【含 工程源码 和 最终完成APK】
  • 开发者的临时文件自动化工具:提升效率与系统整洁度的关键方案
  • 别只当它是管家,RT-Thread 会自己生长
  • 权威解读:企业合作政策如何让非科班生通过国内AI认证实现“弯道超车”?
  • 2026年房山及燕山地区装修套餐全解析:五大优质服务商深度推荐 - 品牌2026
  • openclaw gateway status报错且gate无法正常运行解决办法
  • 无数绘画测试!Nano Banana 2 vs GPT Image 1.5,谁才是最厉害的模型
  • LeetCode-35.搜索插入位置
  • 基于javaweb的作业智能推荐系统的设计与实现
  • 2026超纯水机厂家推荐:进口与国产品牌实力对比 - 品牌推荐大师
  • 光学神经网络:进展与挑战(Optical Neural Networks: Progress and Challenges)
  • 如何本地部署大模型(以PaddleOCR-VL-1.5为例)
  • 2026年房山环保家装公司怎么选?五家实力装企深度解析 - 品牌2026
  • Gemini 3.1 Flash Image Preview (Nano Banana 2) 深度技术评测与极速接入指南
  • 2026最新25万级SUV智驾领先双能源车型推荐!权威榜单发布 - 十大品牌榜
  • ESP-IDF Chip revision问题解决方案
  • 2026年 信捷电气厂家推荐排行榜:江苏/安徽/上海/苏州/常州/合肥/芜湖/南京/镇江/南通/徐州/无锡,专业自动化解决方案与技术创新实力深度解析 - 品牌企业推荐师(官方)
  • 留学申请服务费用多少,考虑性价比,澳洲、马来西亚有啥好选择 - mypinpai
  • ARM Cortex-R52 内核详解(三)——异常处理机制
  • 【hello-agent】Plan-and-Solve
  • 2026 电池放电仪、电池内阻仪厂家:技术与口碑的双重认证 - 深度智识库