pytorch-优化器

PyTorch 2.11 文档中的 torch.optim 是一个专门用于优化神经网络参数的包。

如果说"模型"是躯干,"损失函数"是痛觉感官,那么 Optimizer(优化器) 就是大脑。它根据痛觉(Loss)来决定如何移动身体(更新参数),以求减小痛苦。


1. 核心工作流程:三步走

文档强调了使用优化器时的标准"公式",这几乎出现在每个 PyTorch 训练脚本中:

  1. 清零梯度 :optimizer.zero_grad()

    • 因为 PyTorch 的梯度是累加的,如果不清零,上一次的梯度会干扰本次计算。
  2. 反向传播 :loss.backward()

    • 计算每个参数对损失的影响(求导)。
  3. 更新参数 :optimizer.step()

    • 根据计算出的梯度,真正动手修改模型里的权重。

2. 如何创建一个优化器?

要构造一个优化器,你必须给它两个东西:

  1. 待优化的参数 :通常是 model.parameters()。

  2. 学习率 (Learning Rate, lr):决定步子迈多大。

python 复制代码
# 以常用的随机梯度下降 (SGD) 为例
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

# 或者更聪明的 Adam
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

3. 常见优化算法对比

文档中列出了许多算法,最常用的有这几种:

优化器 全称 特点 适用场景
SGD Stochastic Gradient Descent 最基础,配合动量(Momentum)效果扎实。 几乎所有场景,尤其是微调预训练模型。
Adam Adaptive Moment Estimation 自适应学习率,非常鲁棒,收敛极快。 绝大多数初学者和复杂任务的首选。
RMSprop Root Mean Square Prop 适合处理非平稳目标。 循环神经网络 (RNN) 常用。
LBFGS 限定内存 BFGS 拟牛顿法,内存开销大。 小规模数据的精确优化。

4. 进阶功能:学习率调度器 (LR Scheduler)

文档中还有很大一部分在讲 torch.optim.lr_scheduler。

  • 目的:训练刚开始时步子大一点(快速收敛),快结束时步子小一点(精确寻找最低点)。

  • 常见写法:

python 复制代码
scheduler = StepLR(optimizer, step_size=30, gamma=0.1)
for epoch in range(100):
    train(...)
    validate(...)
    scheduler.step() # 每个 epoch 结束后更新一次学习率

5. 将优化器加入你之前的代码

结合你上一段 CIFAR-10 的代码,完整的"学习"闭环应该是这样的:

python 复制代码
# ... 之前的模型定义和数据加载 ...

loss_func = nn.CrossEntropyLoss()
tudui = Tudui()
# 1. 定义优化器
optimizer = torch.optim.SGD(tudui.parameters(), lr=0.01)

for data in dataloader:
    imgs, targets = data
    outputs = tudui(imgs)
    result_loss = loss_func(outputs, targets)
    
    # 2. 优化三步走
    optimizer.zero_grad() # 清零
    result_loss.backward() # 算梯度
    optimizer.step()       # 改参数
    
    print("模型学习了一次...")

6. 💡 文档中的关键提示

  • Per-parameter options:优化器允许你为不同的层设置不同的学习率(比如冻结特征层,只调优分类层)。

  • Weight Decay (权重衰减):这是 L2 正则化的别名,文档中大多数优化器都支持这个参数,用于防止模型过拟合。

相关推荐
计算机毕业编程指导师3 分钟前
【Python毕设选题推荐】基于Spark的国内主要农作物产量趋势分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·python·数据分析·spark·毕业设计·课程设计·农作物产量
陈天伟教授9 分钟前
学术写作设计的 AI 助手 - Jenni AI
人工智能
海盗12349 分钟前
AI 新闻日报 2026-10-05:三周重构 30 万行 / macOS 给智能体加权限锁 / 具身订单结构被摆上台面
人工智能·macos·重构·机器人·人工智能aigc
计算机毕业编程指导师10 分钟前
【Python毕设选题推荐】基于Spark的宫颈癌变光谱特征数据分析可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·宫颈癌变
ss27310 分钟前
AI全栈实战 | 3.3-01 Python OOP:__init__ 真的是构造函数吗,元类怎么让 Django Model 变魔法
开发语言·python·django
deepseek2310 分钟前
PDF 涂黑失效拆解:谷歌数据中心 52.65 兆瓦与 7.65 亿加仑的账本,被一次复制粘贴揭开
人工智能·pdf·数据中心
Dawson Zhu11 分钟前
《Agentic Design Patterns》第 3 章导读:并行化(Parallelization)
人工智能·语言模型·架构·aigc·agi
FYKJ_201012 分钟前
springboot心理健康管理系统86254-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
长三角智造观察2 小时前
中小制造ERP+MES选型避坑:对接集成VS原生一体化,深度对比TCO与落地痛点
大数据·人工智能·制造
一水鉴天8 小时前
映射、哈希表与哈斯图:计算机科学的三种基线 20261003(元宝)
开发语言·人工智能