torch.optim.lr_scheduler.MultiStepLR
时间: 2023-10-01 15:08:23 浏览: 231
`torch.optim.lr_scheduler.MultiStepLR` 是 PyTorch 中的一个学习率调度器。它允许在训练期间根据训练轮数(epoch)的预定义列表来调整学习率。
具体来说,`MultiStepLR` 对象的初始化函数需要传入以下参数:
- `optimizer`:需要进行学习率调整的优化器对象。
- `milestones`:一个列表,包含所有需要调整学习率的训练轮数(epoch)。
- `gamma`:一个衰减系数,用于调整学习率。默认为 0.1。
例如,以下代码创建了一个 `MultiStepLR` 对象,将学习率在第 30 轮和第 80 轮时分别降低 0.1 和 0.5 倍:
```python
import torch.optim as optim
import torch.optim.lr_scheduler as lr_scheduler
optimizer = optim.SGD(model.parameters(), lr=0.1)
scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[30, 80], gamma=0.1)
```
在训练过程中,可以通过以下方式更新学习率:
```python
for epoch in range(100):
train(...)
val(...)
scheduler.step()
```
每次调用 `scheduler.step()` 时,如果当前的训练轮数等于 `milestones` 中的任何一个元素,就会将学习率乘以 `gamma`。例如,在上面的示例中,当 `epoch` 为 30 或 80 时,学习率都会乘以 0.1。
阅读全文