Shortcuts

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

当某个指标停止改进时,降低学习率。 模型通常在学习停滞时通过将学习率减少2-10倍而受益。 此调度器读取一个指标量,如果在“耐心”数量的epoch内没有看到改进, 则学习率将减少。

Parameters
  • 优化器 (优化器) – 包装的优化器。

  • 模式 (字符串) – 可以是 最小最大。在 最小 模式下,当监控的数量停止减少时,学习率将减少;在 最大 模式下,当监控的数量停止增加时,学习率将减少。默认值:‘最小’。

  • 因子 (浮点数) – 学习率将减少的因子。新学习率 = 学习率 * 因子。默认值:0.1。

  • 耐心 (int) – 在降低学习率之前允许没有改进的epoch数量。 例如,考虑没有耐心的情况(patience = 0)。 在第一个epoch中,建立了一个基线,并且由于没有之前的基线,它总是被认为是好的。 在第二个epoch中,如果性能比基线差, 我们就会遇到一个被认为是不可容忍的epoch。 由于不可容忍的epoch数量(1)大于耐心水平(0), 学习率将在该epoch结束时降低。 从第三个epoch开始,如果性能比基线差,学习率将在每个epoch结束时继续降低。如果性能提高或保持不变, 学习率将不会调整。 默认值:10。

  • 阈值 (浮点数) – 用于衡量新最优值的阈值, 仅关注显著变化。默认值:1e-4。

  • threshold_mode (str) – 可以是 relabs 之一。在 rel 模式下, dynamic_threshold = best * ( 1 + threshold ) 在 ‘max’ 模式下 或 best * ( 1 - threshold ) 在 min 模式下。 在 abs 模式下,dynamic_threshold = best + threshold 在 max 模式下 或 best - threshold 在 min 模式下。默认值:‘rel’。

  • 冷却时间 (int) – 在学习率降低后,等待恢复常规操作的轮数。默认值:0。

  • min_lr (floatlist) – 一个标量或标量列表。所有参数组或每个组的最低学习率。默认值:0。

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

  • verbose (bool) –

    如果 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(...)
>>>     # 注意:step应该在validate()之后调用
>>>     scheduler.step(val_loss)
get_last_lr()

返回当前调度器计算的最后一个学习率。

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

显示当前的学习率。

优云智算