torch.optim.lr_scheduler.CosineAnnealingWarmRestarts를 이용하면 local optima에 빠지는 것과 overfitting을 방지할 수 있다.
T_0은 첫 주기의 길이를 의미하고, 이후에는 주기가 T_mult만큼 곱해진다.
import torch
import matplotlib.pyplot as plt
model = torch.nn.Linear(2, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
lr_sched = torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0=10, T_mult=1, eta_min=0.001, last_epoch=-1)
lrs = []
for i in range(100):
lr_sched.step()
lrs.append(
optimizer.param_groups[0]["lr"]
)
plt.plot(lrs)
import torch
import matplotlib.pyplot as plt
model = torch.nn.Linear(2, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
lr_sched = torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0=10, T_mult=2, eta_min=0.01, last_epoch=-1)
lrs = []
for i in range(300):
lr_sched.step()
lrs.append(
optimizer.param_groups[0]["lr"]
)
plt.plot(lrs)
'딥러닝' 카테고리의 다른 글
CAM(Class Activation Map) (0) | 2022.08.30 |
---|---|
NMS & Anchor box (0) | 2022.08.30 |
Transformer (0) | 2022.08.26 |
코랩 런타임 유지 (0) | 2022.08.19 |
Open CV (0) | 2022.08.02 |