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) – 可以是 rel、abs 之一。在 rel 模式下, dynamic_threshold = best * ( 1 + threshold ) 在 ‘max’ 模式下 或 best * ( 1 - threshold ) 在 min 模式下。 在 abs 模式下,dynamic_threshold = best + threshold 在 max 模式下 或 best - threshold 在 min 模式下。默认值:‘rel’。
冷却时间 (int) – 在学习率降低后,等待恢复常规操作的轮数。默认值: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)¶
显示当前的学习率。