pytorch之学习率变化策略之LambdaLR
发布时间:2024-05-06 06:12:35 人气:
在PyTorch中,学习率衰减可以通过调整优化器的学习率来实现。以下是一些常见的学习率衰减策略的示例代码:
1. StepLR:每过一定数量的epochs,将学习率乘以一个因子。
```
from torch.optim.lr_scheduler import StepLR
optimizer=torch.optim.SGD(model.parameters(), lr=0.1)
scheduler=StepLR(optimizer, step_size=30, gamma=0.1)
for epoch in range(100):
train(...)
validate(...)
scheduler.step()
```
2. MultiStepLR:在预定义的epochs处将学习率乘以一个因子。
```
from torch.optim.lr_scheduler import MultiStepLR
optimizer=torch.optim.SGD(model.parameters(), lr=0.1)
scheduler=MultiStepLR(optimizer, milestones=[30,80], gamma=0.1)
for epoch in range(100):
train(...)
validate(...)
scheduler.step()
```
3. ExponentialLR:每个epoch将学习率乘以一个指数。
```
from torch.optim.lr_scheduler import ExponentialLR
optimizer=torch.optim.SGD(model.parameters(), lr=0.1)
scheduler=ExponentialLR(optimizer, gamma=0.95)
for epoch in range(100):
train(...)
validate(...)
scheduler.step()
```
4. CosineAnnealingLR:使用余弦函数将学习率从初始值降到最小值,然后再回升。
```
from torch.optim.lr_scheduler import CosineAnnealingLR
optimizer=torch.optim.SGD(model.parameters(), lr=0.1)
scheduler=CosineAnnealingLR(optimizer, T_max=100)
for epoch in range(100):
train(...)
validate(...)
scheduler.step()
```
这些是常见的学习率衰减策略的示例,PyTorch中还有更多可用的学习率衰减策略。需要注意的是,要将scheduler.step()放在epoch循环的最后一行,以确保在每个epoch结束时更新学习率。