딥러닝

CosineAnnealingWarmRestarts

승무_ 2022. 8. 30. 13:14

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