快捷键

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 倍的学习率中受益。此调度器读取一个指标量,如果没有在“耐心”数量的 epoch 中看到改进,则降低学习率。

参数:
  • 优化器(Optimizer)- 包装的优化器。

  • 模式(str)- min 或 max 之一。在 min 模式下,当监控的量停止减少时,lr 将减少;在 max 模式下,当监控的量停止增加时,lr 将减少。默认:'min'。

  • 因子(float)- 学习率将减少的因子。new_lr = lr * 因子。默认:0.1。

  • 耐心度(int)- 允许在无改进的情况下经过的 epoch 数,之后学习率将降低。例如,考虑没有耐心度(耐心度 = 0)的情况。在第一个 epoch,建立基线,并且总是被认为是好的,因为没有之前的基线。在第二个 epoch,如果性能比基线差,我们称之为不可容忍的 epoch。由于不可容忍的 epoch 数(1)大于耐心度级别(0),学习率将在本 epoch 结束时降低。从第三个 epoch 开始,如果性能比基线差,学习率将在每个 epoch 结束时继续降低。如果性能提高或保持不变,则不调整学习率。默认:10。

  • 阈值(float)- 测量新最优值的阈值,仅关注显著变化。默认:1e-4。

  • 阈值模式(str)- rel 或 abs 之一。在 rel 模式下,动态阈值 = best * (1 + 阈值) 在‘max’模式下,或 best * (1 - 阈值) 在 min 模式下。在 abs 模式下,动态阈值 = best + 阈值 在 max 模式下,或 best - 阈值 在 min 模式下。默认:'rel'。

  • 冷却时间(int)- 在学习率降低后等待恢复正常操作所需的 epoch 数。默认:0。

  • min_lr(float 或 list)- 一个标量或标量列表。所有参数组或每个组的最低学习率限制。默认:0。

  • eps(float)- 应用到 lr 的最小衰减量。如果新旧学习率之间的差异小于 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]

加载状态字典(state_dict)[source][source] ¶

加载调度器的状态。

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

执行一步操作。


© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源