PyTorch optim — 옵티마이저와 학습률 스케줄러
PyTorch optim — 옵티마이저와 학습률 스케줄러
torch.optim 패키지는 옵티마이저(SGD, Adam, AdamW 등)와 함께 torch.optim.lr_scheduler 로 다양한 학습률 스케줄러를 제공해요.
자주 쓰는 스케줄러
StepLR: 정해진 에폭마다 학습률을gamma배로 줄인다(step_size=7, gamma=0.1).ExponentialLR: 매 스텝마다 지수적으로 감소시킨다.CosineAnnealingLR: 코사인 형태로 최소값까지 감소시켜 부드럽게 수렴시킨다.LambdaLR: 사용자 함수로 학습률을 정의한다(워밍업 등 커스터마이징에 유용).ReduceLROnPlateau: 지표가 멈추면 학습률을 줄이는 적응형 스케줄러.
사용법
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1)
for epoch in range(...):
train(...)
scheduler.step()
주의
스케줄러를 옵티마이저와 함께 쓰면, 여러 스케줄러를 스택하거나 체크포인트 저장·로드 시 scheduler.state_dict() 까지 저장해야 일관되게 재개할 수 있어요.