Delete LR_Scheduler.py

This commit is contained in:
HengZhang 2024-11-28 11:51:45 +08:00
parent 5fdab2b668
commit f43502cc21
1 changed files with 0 additions and 68 deletions

View File

@ -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)