LinDragon 筆記圖書館2026年10月
Journal of CNN

卷積神經網路 · 優化器 · 學習率調度

Research Note

StepLR - 階梯式衰減

StepLR - 階梯式衰減

原理: 每隔固定 epoch 將學習率乘以衰減係數

optimizer = optim.AdamW(model.parameters(), lr=1e-3)
scheduler = optim.lr_scheduler.StepLR(
    optimizer,
    step_size=30,    # 每 30 個 epoch 衰減一次
    gamma=0.1        # 衰減係數(lr = lr × 0.1)
)

# 使用方式
for epoch in range(100):
    train(...)
    scheduler.step()  # 每個 epoch 結束後調用

學習率變化:

Epoch    Learning Rate
0-29     1e-3
30-59    1e-4  (×0.1)
60-89    1e-5  (×0.1)
90-99    1e-6  (×0.1)

可視化:

Learning Rate
  │
1e-3│████████████████████████████
  │
1e-4│                            ████████████████████████████
  │
1e-5│                                                        ████████████
  │
  └─────────────────────────────────────────────────────────────→
    0        30        60        90       Epoch

什麼時候適合用 StepLR?


相關筆記