在本教程中,我们将了解 timm
库中的 PlateauLRScheduler
。
from timm.scheduler.plateau_lr import PlateauLRScheduler
from nbdev.showdoc import show_doc
如上所示,PlateauLRScheduler
接受一个 optimizer
以及一些超参数,我们将在下面详细介绍。我们将首先通过使用 timm
训练文档来了解如何使用 PlateauLRScheduler
训练模型,然后了解如何将此调度器作为独立调度器用于自定义训练脚本。
要使用 PlateauLRScheduler
训练模型,只需在传递训练脚本参数时添加 --sched plateau
参数以及必要的超参数。在本节中,我们还将了解每个超参数如何更新 plateau
调度器。
使用 cosine
调度器的训练命令大致如下:
python train.py ../imagenette2-320/ --sched plateau
PlateauLRScheduler
默认跟踪 eval-metric
,在 timm
训练脚本中,该指标默认为 top-1
。如果性能趋于稳定,则在一定数量的 epoch(默认为 10)后,新的学习率将设置为 lr * decay_rate
。此调度器底层使用 PyTorch 的 ReduceLROnPlateau。
传递给此调度器的所有参数与 PyTorch 的 ReduceLROnPlateau
相同,只是重命名如下:
TIMM | PyTorch |
---|---|
patience_t | patience |
decay_rate | factor |
verbose | verbose |
threshold | threshold |
cooldown_t | cooldown |
mode | mode |
lr_min | min_lr |
其功能与 ReduceLROnPlateau 非常相似,只是增加了噪声(Noise)功能。