本文简要介绍python语言中 torch.optim.lr_scheduler.CyclicLR
的用法。
用法:
class torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr, max_lr, step_size_up=2000, step_size_down=None, mode='triangular', gamma=1.0, scale_fn=None, scale_mode='cycle', cycle_momentum=True, base_momentum=0.8, max_momentum=0.9, last_epoch=- 1, verbose=False)
optimizer(Optimizer) -包装优化器。
max_lr(float或者list) -每个参数组在循环中的上层学习率边界。从函数上讲,它定义了周期幅度 (max_lr - base_lr)。任何周期的 lr 是base_lr 和一些幅度缩放的总和;因此,根据缩放函数,实际上可能无法达到 max_lr。
step_size_up(int) -在一个周期增加的一半中的训练迭代次数。默认值:2000
step_size_down(int) -循环减半的训练迭代次数。如果step_size_down 为无,则设置为step_size_up。默认值:无
mode(str) -{三角形,三角形2,exp_range}之一。值对应于上面详述的政策。如果 scale_fn 不是 None,则忽略此参数。默认值:‘triangular’
gamma(float) -‘exp_range’ 缩放函数中的常数:gamma**(循环迭代)默认值:1.0
scale_fn(函数) -由单个参数 lambda 函数定义的自定义缩放策略,其中 0 <= scale_fn(x) <= 1 表示所有 x >= 0。如果指定,则忽略 ‘mode’。默认值:无
scale_mode(str) -{‘cycle’, ‘iterations’}。定义 scale_fn 是根据循环次数还是循环迭代(自循环开始以来的训练迭代)进行评估。默认值:‘cycle’
cycle_momentum(bool) -如果
True
,动量与 ‘base_momentum’ 和 ‘max_momentum’ 之间的学习率成反比循环。默认值:真base_momentum(float或者list) -每个参数组的循环中较低的动量边界。请注意,动量循环与学习率成反比;在一个周期的峰值,动量是‘base_momentum’,学习率是‘max_lr’。默认值:0.8
max_momentum(float或者list) -每个参数组在循环中的上动量边界。从函数上讲,它定义了周期幅度 (max_momentum - base_momentum)。任何周期的动量是max_momentum的差异和幅度的一些缩放;因此,根据缩放函数,实际上可能无法达到 base_momentum。请注意,动量循环与学习率成反比;在循环开始时,动量为‘max_momentum’,学习率为‘base_lr’ 默认值:0.9
last_epoch(int) -最后一批的索引。恢复训练作业时使用此参数。自从
step()
应该在每批之后调用,而不是在每个 epoch 之后调用,这个数字代表总数量批次计算的,而不是计算的 epoch 总数。当last_epoch=-1 时,调度从头开始。默认值:-1verbose(bool) -如果
True
,每次更新都会向标准输出打印一条消息。默认值:False
。
根据循环学习率策略 (CLR) 设置每个参数组的学习率。该策略以恒定频率循环两个边界之间的学习率,如论文中所述训练神经网络的循环学习率.两个边界之间的距离可以在per-iteration 或per-cycle 的基础上进行缩放。
循环学习率策略在每批之后改变学习率。
step
应该在批次用于训练后调用。如本文所述,此类具有三个内置策略:
“triangular”:没有幅度缩放的基本三角循环。
“triangular2”:一个基本的三角循环,每个循环将初始幅度缩放一半。
“exp_range”:在每个循环迭代中按 缩放初始幅度的循环。
此实现改编自 github 存储库:bckenstler/CLR
示例
>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9) >>> scheduler = torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr=0.01, max_lr=0.1) >>> data_loader = torch.utils.data.DataLoader(...) >>> for epoch in range(10): >>> for batch in data_loader: >>> train_batch(...) >>> scheduler.step()
参数:
相关用法
- Python PyTorch Cycler用法及代码示例
- Python PyTorch Collator用法及代码示例
- Python PyTorch ConvTranspose3d用法及代码示例
- Python PyTorch Conv1d用法及代码示例
- Python PyTorch CSVParser用法及代码示例
- Python PyTorch CosineAnnealingWarmRestarts.step用法及代码示例
- Python PyTorch CrossEntropyLoss用法及代码示例
- Python PyTorch ChannelShuffle用法及代码示例
- Python PyTorch CocoCaptions用法及代码示例
- Python PyTorch CSVDictParser用法及代码示例
- Python PyTorch ContinuousBernoulli用法及代码示例
- Python PyTorch Cityscapes用法及代码示例
- Python PyTorch ChainedScheduler用法及代码示例
- Python PyTorch Cauchy用法及代码示例
- Python PyTorch ConstantPad2d用法及代码示例
- Python PyTorch CriteoIterDataPipe用法及代码示例
- Python PyTorch ComplexNorm用法及代码示例
- Python PyTorch ConvTranspose2d用法及代码示例
- Python PyTorch CppExtension用法及代码示例
- Python PyTorch Concater用法及代码示例
- Python PyTorch Compose用法及代码示例
- Python PyTorch Chi2用法及代码示例
- Python PyTorch ConstantLR用法及代码示例
- Python PyTorch Conv2d用法及代码示例
- Python PyTorch CosineSimilarity用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.optim.lr_scheduler.CyclicLR。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。