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

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.xdnf.cn/news/14686.html

相关文章:

  • 港澳地区,海外服务器ping通可能是地区运营商问题
  • c# sugersql 获取子表数据排序
  • MySQL彻底卸载教程
  • 桌面小屏幕实战课程:DesktopScreen 16 HTTP
  • Java锁机制知识点
  • 《Go语言高级编程》RPC 入门
  • python -日期与天数的转换
  • 量化面试绿皮书:56. 多项式求和
  • web3 docs
  • Linux进程关系
  • Flutter 网络请求指南, 从 iOS 到 Flutter 的 Dio + Retrofit 组合
  • 飞算科技依托 JavaAI 核心技术,打造企业级智能开发全场景方案
  • 数据应该如何组织,才能让Excel“读懂”?
  • Django ORM 1. 创建模型(Model)
  • 【2024 CVPR-Backbone】RepViT: Revisiting Mobile CNN From ViT Perspective
  • 什么是上证50etf期权波动率?
  • CPT204-Advanced OO Programming: Lists, Stacks, Queues, and Priority Queues
  • 工作台-02.代码开发
  • HTTP协议中Connection: Keep-Alive和Keep-Alive: timeout=60, max=100的作用
  • 什么是国际期货?期货交易平台搭建
  • [ linux-系统 ] 磁盘与文件系统
  • 【大模型实战 | BERT 量化分析(2)】
  • 从萌芽到领航:广州华锐互动的 AR 奋进之路​
  • 【github】从本地更新仓库里的文件笔记
  • MCP-安全(代码实例)
  • oracle基础审计管理
  • 【Linux指南】压缩、网络传输与系统工具
  • 2025.6.26总结
  • Kotlin环境搭建与基础语法入门
  • springcloud 尚硅谷 看到9开头