Delete LR_Scheduler.py
This commit is contained in:
parent
5fdab2b668
commit
f43502cc21
|
|
@ -1,68 +0,0 @@
|
||||||
import numpy as np
|
|
||||||
from federatedscope.register import register_scheduler
|
|
||||||
|
|
||||||
|
|
||||||
# LR Scheduler
|
|
||||||
class LR_Scheduler(object):
|
|
||||||
def __init__(self,
|
|
||||||
optimizer,
|
|
||||||
warmup_epochs,
|
|
||||||
warmup_lr,
|
|
||||||
num_epochs,
|
|
||||||
base_lr,
|
|
||||||
final_lr,
|
|
||||||
iter_per_epoch,
|
|
||||||
constant_predictor_lr=False):
|
|
||||||
self.base_lr = base_lr
|
|
||||||
self.constant_predictor_lr = constant_predictor_lr
|
|
||||||
warmup_iter = iter_per_epoch * warmup_epochs
|
|
||||||
warmup_lr_schedule = np.linspace(warmup_lr, base_lr, warmup_iter)
|
|
||||||
decay_iter = iter_per_epoch * (num_epochs - warmup_epochs)
|
|
||||||
cosine_lr_schedule = final_lr + 0.5 * (base_lr - final_lr) * (
|
|
||||||
1 + np.cos(np.pi * np.arange(decay_iter) / decay_iter))
|
|
||||||
|
|
||||||
self.lr_schedule = np.concatenate(
|
|
||||||
(warmup_lr_schedule, cosine_lr_schedule))
|
|
||||||
self.optimizer = optimizer
|
|
||||||
self.iter = 0
|
|
||||||
self.current_lr = 0
|
|
||||||
|
|
||||||
def step(self):
|
|
||||||
for param_group in self.optimizer.param_groups:
|
|
||||||
|
|
||||||
if self.constant_predictor_lr and param_group[
|
|
||||||
'name'] == 'predictor':
|
|
||||||
param_group['lr'] = self.base_lr
|
|
||||||
else:
|
|
||||||
lr = param_group['lr'] = self.lr_schedule[self.iter]
|
|
||||||
|
|
||||||
self.iter += 1
|
|
||||||
self.current_lr = lr
|
|
||||||
return lr
|
|
||||||
|
|
||||||
def get_lr(self):
|
|
||||||
return self.current_lr
|
|
||||||
|
|
||||||
|
|
||||||
def get_scheduler(optimizer, type):
|
|
||||||
try:
|
|
||||||
import torch.optim as optim
|
|
||||||
except ImportError:
|
|
||||||
optim = None
|
|
||||||
scheduler = None
|
|
||||||
|
|
||||||
if type == 'cos_lr_scheduler':
|
|
||||||
if optim is not None:
|
|
||||||
lr_lambda = [lambda epoch: epoch // 30]
|
|
||||||
scheduler = optim.lr_scheduler.LambdaLR(optimizer,
|
|
||||||
warmup_epochs=0,
|
|
||||||
warmup_lr=0,
|
|
||||||
num_epochs=50,
|
|
||||||
base_lr=30,
|
|
||||||
final_lr=0,
|
|
||||||
iter_per_epoch=int(50000 /
|
|
||||||
512))
|
|
||||||
return scheduler
|
|
||||||
|
|
||||||
|
|
||||||
register_scheduler('cos_lr_scheduler', get_scheduler)
|
|
||||||
Loading…
Reference in New Issue