ReduceLROnPlateau

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, verbose='deprecated')[源代码]

当某个指标不再改善时,降低学习率。

当学习停滞时,通常可以通过将学习率降低2到10倍来提高模型性能。该调度程序监控某个指标,在指定的“耐心期”内如果没有观察到改善,就会自动减小学习率。

参数
  • optimizer (Optimizer) — 包裹后的优化器。

  • mode (str) – 一个minmax。在min 模式下,当监测的数量停止减少时,lr 将会降低;而在max 模式下,当监测的数量停止增加时,lr 也会被降低。默认值:‘min’。

  • factor (浮点数) – 学习率减少的因子。新的学习率为 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) – 可以是 relabs。在rel模式下,动态阈值在‘max’模式中为 best * (1 + threshold),而在min模式中为 best * (1 - threshold)。在abs模式下,在max模式中动态阈值为 best + threshold,而在min模式中为 best - threshold。默认值:‘rel’。

  • cooldown (int) – 学习率降低后的冷却期,即等待恢复正常操作的纪元数。默认值:0。

  • min_lr (floatlist) – 学习率的下限,可以是标量或标量列表。对于所有参数组,默认值为 0。

  • eps (float) – 学习率的最小衰减量。如果新旧学习率之间的差异小于 eps,则忽略更新。默认值:1e-8。

  • verbose (bool | str) –

    如果设置为True,则会对每次更新在标准输出中打印一条消息。默认值为False

    自版本 2.2 起已弃用:verbose 已被弃用。请使用 get_last_lr() 来访问学习率。

示例

>>> 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)
get_last_lr()

返回当前调度器计算出的最新学习率。

返回类型

List [float]

get_lr()

采用调度程序的链式形式来计算学习率。

返回类型

List [float]

load_state_dict(state_dict)[源代码]

加载调度器的状态。

print_lr(is_verbose, group, lr, epoch=None)

显示当前学习率。

自版本 2.4 起已弃用:print_lr() 已被弃用,请使用 get_last_lr() 来访问学习率。

step(metrics, epoch=None)[源代码]

执行一个步骤。

本页目录