本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。