torch 学习率衰减
时间: 2023-09-13 07:08:39 浏览: 191
学习率衰减是深度学习训练中常用的一种技术,它可以在训练过程中逐渐减小学习率,以帮助模型更好地收敛或避免陷入局部最优解。
在 PyTorch 中,可以使用 torch.optim.lr_scheduler 模块中的各种学习率调度器来实现学习率的衰减。以下是一个示例:
```python
import torch
import torch.optim as optim
import torch.optim.lr_scheduler as lr_scheduler
# 定义优化器和学习率初始值
optimizer = optim.SGD(model.parameters(), lr=0.1)
scheduler = lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.1)
# 训练过程中更新学习率
for epoch in range(num_epochs):
# 前向传播和反向传播
loss = ...
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 更新学习率
scheduler.step()
```
在上述示例中,我们首先定义了一个优化器(这里使用 SGD 作为示例),然后定义了一个学习率调度器(StepLR 调度器)。StepLR 调度器会在每个 `step_size` 个训练轮次后将学习率乘以 `gamma`,从而实现学习率的衰减。在每个训练轮次结束时,我们调用 `scheduler.step()` 来更新学习率。
除了 StepLR 调度器之外,PyTorch 还提供了其他一些常用的调度器,如 MultiStepLR、ReduceLROnPlateau 等,你可以根据具体的需求选择合适的调度器。
阅读全文