快捷方式

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) – minmax 之一。在 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) – relabs 之一。在 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)
get_last_lr()[source]

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

返回类型

list[float]

get_lr()[source]

使用调度器的链式形式计算学习率。

返回类型

list[float]

load_state_dict(state_dict)[source][source]

加载调度器的状态。

step(metrics, epoch=None)[source][source]

执行一步。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源