本文简要介绍python语言中 torch.optim.lr_scheduler.OneCycleLR
的用法。
用法:
class torch.optim.lr_scheduler.OneCycleLR(optimizer, max_lr, total_steps=None, epochs=None, steps_per_epoch=None, pct_start=0.3, anneal_strategy='cos', cycle_momentum=True, base_momentum=0.85, max_momentum=0.95, div_factor=25.0, final_div_factor=10000.0, three_phase=False, last_epoch=- 1, verbose=False)
optimizer(Optimizer) -包装优化器。
total_steps(int) -循环中的总步数。请注意,如果此处未提供值,则必须通过提供纪元和steps_per_epoch 的值来推断。默认值:无
epochs(int) -训练的纪元数。如果未提供 total_steps 的值,则将其与 steps_per_epoch 一起使用,以便推断循环中的总步数。默认值:无
steps_per_epoch(int) -每个时期训练的步数。如果未提供 total_steps 的值,则将其与纪元一起使用,以便推断循环中的总步数。默认值:无
pct_start(float) -提高学习率所花费的周期百分比(以步骤数计)。默认值:0.3
anneal_strategy(str) -{‘cos’, ‘linear’} 指定退火策略:“cos” 表示余弦退火,“linear” 表示线性退火。默认值:‘cos’
cycle_momentum(bool) -如果
True
,动量与 ‘base_momentum’ 和 ‘max_momentum’ 之间的学习率成反比循环。默认值:真base_momentum(float或者list) -每个参数组的循环中的较低动量边界。请注意,动量的循环与学习率成反比;在一个周期的峰值,动量为‘base_momentum’,学习率为‘max_lr’。默认值:0.85
max_momentum(float或者list) -每个参数组的循环中的动量上限。从函数上讲,它定义了周期幅度(max_momentum - base_momentum)。请注意,动量的循环与学习率成反比;在一个周期开始时,动量为‘max_momentum’,学习率为‘base_lr’ 默认值:0.95
div_factor(float) -通过 initial_lr = max_lr/div_factor 确定初始学习率 默认值:25
final_div_factor(float) -通过 min_lr = initial_lr/final_div_factor 确定最小学习率 默认值:1e4
three_phase(bool) -如果
True
,使用调度的第三阶段根据‘final_div_factor’来消灭学习率,而不是修改第二阶段(前两个阶段将关于‘pct_start’指示的步骤对称)。last_epoch(int) -最后一批的索引。恢复训练作业时使用此参数。自从
step()
应该在每批之后调用,而不是在每个 epoch 之后调用,这个数字代表总数量批次计算的,而不是计算的 epoch 总数。当last_epoch=-1 时,调度从头开始。默认值:-1verbose(bool) -如果
True
,每次更新都会向标准输出打印一条消息。默认值:False
。
按照1cycle学习率策略设置各参数组的学习率。 1cycle 策略将学习率从初始学习率退火到某个最大学习率,然后从该最大学习率退火到远低于初始学习率的某个最小学习率。该政策最初在论文中说明Super-Convergence:使用大学习率非常快速地训练神经网络.
1cycle learning rate policy 在每批之后改变学习率。
step
应该在批次用于训练后调用。此调度程序不可链接。
另请注意,循环中的步骤总数可以通过以下两种方式之一确定(按优先顺序列出):
明确提供了total_steps 的值。
提供了多个纪元(epochs)和每个纪元的步数(steps_per_epoch)。在这种情况下,总步数由 total_steps = epochs * steps_per_epoch 推断
您必须为total_steps 提供一个值,或者为时期和steps_per_epoch 提供一个值。
该调度程序的默认行为遵循 1cycle 的 fastai 实现,它声称“未发布的工作仅使用两个阶段就显示出更好的结果”。要改为模仿原始论文的行为,请设置
three_phase=True
。示例
>>> data_loader = torch.utils.data.DataLoader(...) >>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9) >>> scheduler = torch.optim.lr_scheduler.OneCycleLR(optimizer, max_lr=0.01, steps_per_epoch=len(data_loader), epochs=10) >>> for epoch in range(10): >>> for batch in data_loader: >>> train_batch(...) >>> scheduler.step()
参数:
相关用法
- Python PyTorch OneHotCategorical用法及代码示例
- Python PyTorch OnDiskCacheHolder用法及代码示例
- Python PyTorch OnlineReader用法及代码示例
- Python PyTorch ObserverBase.with_args用法及代码示例
- Python PyTorch ObserverBase.with_callable_args用法及代码示例
- Python PyTorch OverArch用法及代码示例
- Python PyTorch frexp用法及代码示例
- Python PyTorch jvp用法及代码示例
- Python PyTorch cholesky用法及代码示例
- Python PyTorch vdot用法及代码示例
- Python PyTorch ELU用法及代码示例
- Python PyTorch ScaledDotProduct.__init__用法及代码示例
- Python PyTorch gumbel_softmax用法及代码示例
- Python PyTorch get_tokenizer用法及代码示例
- Python PyTorch saved_tensors_hooks用法及代码示例
- Python PyTorch positive用法及代码示例
- Python PyTorch renorm用法及代码示例
- Python PyTorch AvgPool2d用法及代码示例
- Python PyTorch MaxUnpool3d用法及代码示例
- Python PyTorch Bernoulli用法及代码示例
- Python PyTorch Tensor.unflatten用法及代码示例
- Python PyTorch Sigmoid用法及代码示例
- Python PyTorch Tensor.register_hook用法及代码示例
- Python PyTorch ShardedEmbeddingBagCollection.named_parameters用法及代码示例
- Python PyTorch sqrt用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.optim.lr_scheduler.OneCycleLR。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。