ReduceLROnPlateau¶
- class torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08)[source][source]¶
当某个指标停止提升时,降低学习率。
一旦学习停滞,模型通常会受益于将学习率降低 2-10 倍。该调度器读取一个指标的值,如果在 'patience' 个 epoch 内没有看到提升,则会降低学习率。
- 参数
optimizer (Optimizer) – 包裹的优化器。
mode (str) – min 或 max 之一。在 min 模式下,当监控的指标停止下降时会降低学习率;在 max 模式下,当监控的指标停止增加时会降低学习率。默认值:'min'。
factor (float) – 学习率降低的因子。new_lr = lr * factor。默认值:0.1。
patience (int) – 允许没有提升的 epoch 数。在此之后,学习率将降低。例如,考虑没有耐心的情况(patience = 0)。在第一个 epoch 中,建立一个基线,并且始终被认为是好的,因为没有之前的基线。在第二个 epoch 中,如果性能比基线差,则被认为是一个不可容忍的 epoch。由于不可容忍的 epoch 数 (1) 大于耐心水平 (0),因此在此 epoch 结束时降低学习率。从第三个 epoch 起,如果性能比基线差,则在每个 epoch 结束时继续降低学习率。如果性能改善或保持不变,则不调整学习率。默认值:10。
threshold (float) – 用于衡量新最优值的阈值,仅关注显著变化。默认值:1e-4。
threshold_mode (str) – rel 或 abs 之一。在 rel 模式下,在 'max' 模式中 dynamic_threshold = best * ( 1 + threshold ),或在 min 模式中 dynamic_threshold = best * ( 1 - threshold )。在 abs 模式下,在 max 模式中 dynamic_threshold = best + threshold,或在 min 模式中 dynamic_threshold = best - threshold。默认值:'rel'。
cooldown (int) – 学习率降低后,在恢复正常操作之前等待的 epoch 数。默认值:0。
min_lr (float or list) – 一个标量或一个标量列表。所有参数组或每个参数组的学习率下限。默认值:0。
eps (float) – 应用于学习率的最小衰减。如果新旧学习率之间的差异小于 eps,则忽略更新。默认值:1e-8。
示例
>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9) >>> scheduler = ReduceLROnPlateau(optimizer, 'min') >>> for epoch in range(10): >>> train(...) >>> val_loss = validate(...) >>> # Note that step should be called after validate() >>> scheduler.step(val_loss)