torch.optim.SGD 基础用法
torch.optim.SGD
是 PyTorch 中实现随机梯度下降(Stochastic Gradient Descent)的优化器。基础用法是传入待优化参数和学习率:
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)
关键参数说明
params
:需要优化的参数,通常通过model.parameters()
获取lr
:学习率(默认 0.01)momentum
:动量因子(默认 0)dampening
:动量抑制因子(默认 0)weight_decay
:权重衰减(L2 惩罚,默认 0)nesterov
:是否使用 Nesterov 动量(默认 False)
典型配置示例
带有动量项的 SGD 优化器:
optimizer = torch.optim.SGD(
net.parameters(),
lr=0.01,
momentum=0.9,
weight_decay=1e-4
)
使用方法
在训练循环中配合梯度清零和参数更新:
for inputs, targets in dataloader:
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
注意事项
学习率需要根据具体任务进行调整,可配合学习率调度器使用:
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1)
SGD 适用于多数深度学习任务,在批归一化等技术的配合下能取得较好效果。对于稀疏数据或需要自适应学习率的场景,可考虑 Adam 等其他优化器。