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() 까지 저장해야 일관되게 재개할 수 있어요.

더 알아보기