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

pytorch中的几个概念

几个容器:

nn.Sequential

nn.ModuleList

nn.ModuleDict

单个容器都会将变量加入parameter中,进行追踪和更新

区别:Sequential 不 用定义forward,会自动顺序执行各个子模块

        ModuleList和ModuleDict不会自动forward,需要子定义forward顺序,所以需要自定义继承至nn.Module的类,实现forward

model.modules() 递归的显示所有模块

model.named_modules() 递归的显示所有模块,生成器的元素是(name,param)

model.children() 子模块,子模块内部的细节不显示

model.named_children() 子模块

model.parameters() 显示所以参数,只显示tensor

model.named_parameters() 显示带名称的tensor,

注意梯度在tensor.glad中,需要进行backward()后才会有梯度值,不然都是None。

  • 必须在执行loss.backward()后才有梯度值4
  • 执行optimizer.step()后梯度会被清零

检查未更新参数(调试用) 用于排查梯度消失/爆炸问题

loss.backward()
unupdated = []
for name, param in model.named_parameters():if param.grad is None:unupdated.append(name)
print(f"未更新参数: {unupdated}")

使用torch.no_grad()可避免不必要的梯度计算和存储:

with torch.no_grad():    # 显存优化关键:ml-citation{ref="8" data="citationList"}outputs = model(inputs)
状态含义常见原因
Tensor有效梯度正常反向传播
None无梯度未执行backward或参数冻结2
全0梯度消失网络结构或初始化问题

梯度裁剪‌:防止爆炸

torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)

显存监控‌:

print(torch.cuda.memory_allocated())  # 查看当前显存占用

 通过.grad查看梯度是核心方法,结合named_parameters()可定位到具体层34。分布式训练需设置find_unused_parameters=False确保完整检测2。

http://www.lryc.cn/news/576484.html

相关文章:

  • NLP中的同义词替换及我踩的坑
  • 《Python 实现 B 站视频信息爬虫:从批量获取到 CSV 保存》
  • 数字孪生技术引领UI前端设计新革命:实时交互与模拟预测
  • LINUX628 NFS 多web;主从dns;ntp;samba
  • 鸿蒙5:ArkTS基本介绍
  • VR训练美国服务器:高性能解决方案与优化指南
  • 【LeetCode 热题 100】438. 找到字符串中所有字母异位词——(解法三)不定长滑动窗口+数组
  • 构建 AI 系统的 4 大 Agentic AI 设计模式
  • 网关ARP防护的措施
  • qt和qtcreator版本关系
  • n8n-nodes-puppeteer截图中文变方块乱码解决方法
  • 在单片机中如何实现一个shell控制台
  • Launcher3中的CellLayout 和ShortcutAndWidgetContainer 的联系和各自职责
  • 前端react面试题之实现网页多选搜索框
  • 【学习笔记】深入理解Java虚拟机学习笔记——第12章 Java内存模型与线程
  • python中学物理实验模拟:瞬间推力与摩擦力作用下的物体运动
  • 力扣网C语言编程题:在数组中查找目标值位置之二分查找法
  • 解决cursor无法下载插件等网络问题
  • 深入详解:随机森林算法——概念、原理、实现与应用场景
  • screen用法
  • Gradio全解13——MCP详解(4)——TypeScript包命令:npm与npx
  • 服务器的维护技术都有哪些?
  • Flutter基础(Isolate)
  • 【论文阅读笔记】知网SCI——基于主成分分析的空间外差干涉数据校正研究
  • 开疆智能CCLinkIE转ModbusTCP网关连接傲博机器人配置案例
  • 舵机在不同类型机器人中的应用
  • JVM调优实战 Day 10:性能指标采集与可视化
  • 【闲谈】技术债:软件开发的隐形杀手
  • Redis高级数据结构深度解析:BitMap、布隆过滤器、HyperLogLog与Geo应用实践
  • JWT认证性能优化实战指南