Python torch.optim.lr_scheduler.MultiStepLR() Examples
The following are 30
code examples of torch.optim.lr_scheduler.MultiStepLR().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
torch.optim.lr_scheduler
, or try the search function
.
Example #1
Source File: main.py From Tricks-of-Semi-supervisedDeepLeanring-Pytorch with MIT License | 7 votes |
def create_lr_scheduler(optimizer, config): if config.lr_scheduler == 'cos': scheduler = lr_scheduler.CosineAnnealingLR(optimizer, T_max=config.epochs, eta_min=config.min_lr) elif config.lr_scheduler == 'multistep': if config.steps is None: return None if isinstance(config.steps, int): config.steps = [config.steps] scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=config.steps, gamma=config.gamma) elif config.lr_scheduler == 'exp-warmup': lr_lambda = exp_warmup(config.rampup_length, config.rampdown_length, config.epochs) scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lr_lambda) elif config.lr_scheduler == 'none': scheduler = None else: raise ValueError("No such scheduler: {}".format(config.lr_scheduler)) return scheduler
Example #2
Source File: cifar100_DTC.py From DTC with MIT License | 6 votes |
def Baseline_train(model, train_loader, eva_loader, args): optimizer = SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) for epoch in range(args.epochs): loss_record = AverageMeter() model.train() exp_lr_scheduler.step() for batch_idx, ((x, _), label, idx) in enumerate(tqdm(train_loader)): x = x.to(device) _, feat = model(x) prob = feat2prob(feat, model.center) loss = F.kl_div(prob.log(), args.p_targets[idx].float().to(device)) loss_record.update(loss.item(), x.size(0)) optimizer.zero_grad() loss.backward() optimizer.step() print('Train Epoch: {} Avg Loss: {:.4f}'.format(epoch, loss_record.avg)) _, _, _, probs = test(model, eva_loader, args, epoch) if epoch % args.update_interval==0: print('updating target ...') args.p_targets = target_distribution(probs) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #3
Source File: train.py From RESCAN with MIT License | 6 votes |
def __init__(self): self.log_dir = settings.log_dir self.model_dir = settings.model_dir ensure_dir(settings.log_dir) ensure_dir(settings.model_dir) logger.info('set log dir as %s' % settings.log_dir) logger.info('set model dir as %s' % settings.model_dir) self.net = RESCAN().cuda() self.crit = MSELoss().cuda() self.ssim = SSIM().cuda() self.step = 0 self.save_steps = settings.save_steps self.num_workers = settings.num_workers self.batch_size = settings.batch_size self.writers = {} self.dataloaders = {} self.opt = Adam(self.net.parameters(), lr=settings.lr) self.sche = MultiStepLR(self.opt, milestones=[15000, 17500], gamma=0.1)
Example #4
Source File: train.py From GraphRNN with MIT License | 6 votes |
def train(args, dataloader, model): epoch = 1 optimizer = optim.Adam(list(model.parameters()), lr=args.lr) scheduler = MultiStepLR(optimizer, milestones=LR_milestones, gamma=args.lr) model.train() for epoch in range(5000): for batch_idx, data in enumerate(dataloader): model.zero_grad() features = data['features'].float() adj_input = data['adj'].float() features = Variable(features).cuda() adj_input = Variable(adj_input).cuda() loss = model(features, adj_input) print('Epoch: ', epoch, ', Iter: ', batch_idx, ', Loss: ', loss) loss.backward() optimizer.step() scheduler.step() break
Example #5
Source File: task_self_supervised.py From amdim-public with MIT License | 6 votes |
def train_self_supervised(model, learning_rate, dataset, train_loader, test_loader, stat_tracker, checkpointer, log_dir, device): # configure optimizer mods_inf = [m for m in model.info_modules] mods_cls = [m for m in model.class_modules] mods_to_opt = mods_inf + mods_cls optimizer = optim.Adam( [{'params': mod.parameters(), 'lr': learning_rate} for mod in mods_to_opt], betas=(0.8, 0.999), weight_decay=1e-5, eps=1e-8) # configure learning rate schedulers for the optimizers if dataset in [Dataset.C10, Dataset.C100, Dataset.STL10]: scheduler = MultiStepLR(optimizer, milestones=[250, 280], gamma=0.2) epochs = 300 else: # best imagenet results use longer schedules... # -- e.g., milestones=[60, 90], epochs=100 scheduler = MultiStepLR(optimizer, milestones=[30, 45], gamma=0.2) epochs = 50 # train the model _train(model, optimizer, scheduler, checkpointer, epochs, train_loader, test_loader, stat_tracker, log_dir, device)
Example #6
Source File: utility.py From 3D_Appearance_SR with MIT License | 6 votes |
def make_scheduler(args, my_optimizer): if args.decay_type == 'step': scheduler = lrs.StepLR( my_optimizer, step_size=args.lr_decay, gamma=args.gamma ) elif args.decay_type.find('step') >= 0: milestones = args.decay_type.split('_') milestones.pop(0) milestones = list(map(lambda x: int(x), milestones)) scheduler = lrs.MultiStepLR( my_optimizer, milestones=milestones, gamma=args.gamma ) return scheduler
Example #7
Source File: lr_schedulers.py From srgan with MIT License | 6 votes |
def get_lr_scheduler(optimizer_conf, scheduler_name, optimizer, initial_epoch=-1): if scheduler_name == 'multistep': return lr_scheduler.MultiStepLR(optimizer, optimizer_conf.decay_steps, optimizer_conf.decay_factor, initial_epoch) elif scheduler_name == 'linear' or scheduler_name == 'polynomial': power = 1.0 if scheduler_name == 'linear' else optimizer_conf.decay_power lr_lambda = _get_polynomial_decay(optimizer_conf.learning_rate, optimizer_conf.end_learning_rate, optimizer_conf.decay_steps, optimizer_conf.get_attr('start_decay', default=0), power) return lr_scheduler.LambdaLR(optimizer, lr_lambda, initial_epoch) else: raise ValueError('Unknown learning rate scheduler {}'.format(scheduler_name))
Example #8
Source File: imagenet2cifar_DTC.py From DTC with MIT License | 6 votes |
def Baseline_train(model, train_loader, eva_loader, args): optimizer = SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) for epoch in range(args.epochs): loss_record = AverageMeter() model.train() exp_lr_scheduler.step() for batch_idx, (x, label, idx) in enumerate(tqdm(train_loader)): x = x.to(device) feat = model(x) prob = feat2prob(feat, model.center) loss = F.kl_div(prob.log(), args.p_targets[idx].float().to(device)) loss_record.update(loss.item(), x.size(0)) optimizer.zero_grad() loss.backward() optimizer.step() print('Train Epoch: {} Avg Loss: {:.4f}'.format(epoch, loss_record.avg)) _, _, _, probs = test(model, eva_loader, args) if epoch % args.update_interval==0: print('updating target ...') args.p_targets = target_distribution(probs) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #9
Source File: cifar100_classif.py From DTC with MIT License | 6 votes |
def train(model, train_loader, args): optimizer = Adam(model.parameters(), lr=args.lr) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) criterion=nn.CrossEntropyLoss().cuda(device) for epoch in range(args.epochs): loss_record = AverageMeter() acc_record = AverageMeter() model.train() exp_lr_scheduler.step() for batch_idx, (x, label, _) in enumerate(train_loader): x, target = x.to(device), label.to(device) optimizer.zero_grad() _, output= model(x) loss = criterion(output, target) acc = accuracy(output, target) loss.backward() optimizer.step() acc_record.update(acc[0].item(), x.size(0)) loss_record.update(loss.item(), x.size(0)) print('Train Epoch: {} Avg Loss: {:.4f} \t Avg Acc: {:.4f}'.format(epoch, loss_record.avg, acc_record.avg)) test(model, eva_loader, args) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #10
Source File: task_classifiers.py From amdim-public with MIT License | 6 votes |
def train_classifiers(model, learning_rate, dataset, train_loader, test_loader, stat_tracker, checkpointer, log_dir, device): # retrain the evaluation classifiers using the trained feature encoder for mod in model.class_modules: # reset params in the evaluation classifiers mod.apply(weight_init) mods_to_opt = [m for m in model.class_modules] # configure optimizer optimizer = optim.Adam( [{'params': mod.parameters(), 'lr': learning_rate} for mod in mods_to_opt], betas=(0.8, 0.999), weight_decay=1e-5, eps=1e-8) # configure learning rate schedulers if dataset in [Dataset.C10, Dataset.C100, Dataset.STL10]: scheduler = MultiStepLR(optimizer, milestones=[80, 110], gamma=0.2) epochs = 120 elif dataset == Dataset.IN128: scheduler = MultiStepLR(optimizer, milestones=[15, 25], gamma=0.2) epochs = 30 elif dataset == Dataset.PLACES205: scheduler = MultiStepLR(optimizer, milestones=[7, 12], gamma=0.2) epochs = 15 # retrain the model _train(model, optimizer, scheduler, checkpointer, epochs, train_loader, test_loader, stat_tracker, log_dir, device)
Example #11
Source File: cifar10_classif.py From DTC with MIT License | 6 votes |
def train(model, train_loader, args): optimizer = Adam(model.parameters(), lr=args.lr) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) criterion=nn.CrossEntropyLoss().cuda(device) for epoch in range(args.epochs): loss_record = AverageMeter() acc_record = AverageMeter() model.train() exp_lr_scheduler.step() for batch_idx, (x, label, _) in enumerate(train_loader): x, target = x.to(device), label.to(device) optimizer.zero_grad() output= model(x) loss = criterion(output, target) acc = accuracy(output, target) loss.backward() optimizer.step() acc_record.update(acc[0].item(), x.size(0)) loss_record.update(loss.item(), x.size(0)) print('Train Epoch: {} Avg Loss: {:.4f} \t Avg Acc: {:.4f}'.format(epoch, loss_record.avg, acc_record.avg)) test(model, eva_loader, args) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #12
Source File: utility.py From AWSRN with MIT License | 6 votes |
def make_scheduler(args, my_optimizer): if args.decay_type == 'step': scheduler = lrs.StepLR( my_optimizer, step_size=args.lr_decay, gamma=args.gamma ) if args.decay_type.find('step') >= 0: milestones = args.decay_type.split('_') milestones.pop(0) milestones = list(map(lambda x: int(x), milestones)) print(milestones) scheduler = lrs.MultiStepLR( my_optimizer, milestones=milestones, gamma=args.gamma ) if args.decay_type == 'restart': scheduler = lrs.LambdaLR(my_optimizer, lambda epoch: multistep_restart(args.period, epoch)) return scheduler
Example #13
Source File: utility.py From NTIRE2019_EDRN with MIT License | 6 votes |
def make_scheduler(args, my_optimizer): if args.decay_type == 'step': scheduler = lrs.StepLR( my_optimizer, step_size=args.lr_decay, gamma=args.gamma ) elif args.decay_type.find('step') >= 0: milestones = args.decay_type.split('_') milestones.pop(0) milestones = list(map(lambda x: int(x), milestones)) scheduler = lrs.MultiStepLR( my_optimizer, milestones=milestones, gamma=args.gamma ) return scheduler
Example #14
Source File: utility.py From 2018_subeesh_epsr_eccvw with MIT License | 6 votes |
def make_scheduler(args, my_optimizer): if args.decay_type == 'step': scheduler = lrs.StepLR( my_optimizer, step_size=args.lr_decay, gamma=args.gamma ) elif args.decay_type.find('step') >= 0: milestones = args.decay_type.split('_') milestones.pop(0) milestones = list(map(lambda x: int(x), milestones)) scheduler = lrs.MultiStepLR( my_optimizer, milestones=milestones, gamma=args.gamma ) return scheduler
Example #15
Source File: utility.py From MSRN-PyTorch with MIT License | 6 votes |
def make_scheduler(args, my_optimizer): if args.decay_type == 'step': scheduler = lrs.StepLR( my_optimizer, step_size=args.lr_decay, gamma=args.gamma ) elif args.decay_type.find('step') >= 0: milestones = args.decay_type.split('_') milestones.pop(0) milestones = list(map(lambda x: int(x), milestones)) scheduler = lrs.MultiStepLR( my_optimizer, milestones=milestones, gamma=args.gamma ) return scheduler
Example #16
Source File: utility.py From MSRN-PyTorch with MIT License | 6 votes |
def make_scheduler(args, my_optimizer): if args.decay_type == 'step': scheduler = lrs.StepLR( my_optimizer, step_size=args.lr_decay, gamma=args.gamma ) elif args.decay_type.find('step') >= 0: milestones = args.decay_type.split('_') milestones.pop(0) milestones = list(map(lambda x: int(x), milestones)) scheduler = lrs.MultiStepLR( my_optimizer, milestones=milestones, gamma=args.gamma ) return scheduler
Example #17
Source File: lr_scheduler.py From XenonPy with BSD 3-Clause "New" or "Revised" License | 6 votes |
def __init__(self, *, milestones, gamma=0.1, last_epoch=-1): """Decays the learning rate of each parameter group by gamma once the number of epoch reaches one of the milestones. Notice that such decay can happen simultaneously with other changes to the learning rate from outside this scheduler. When last_epoch=-1, sets initial lr as lr. Args: milestones (list): List of epoch indices. Must be increasing. gamma (float): Multiplicative factor of learning rate decay. Default: 0.1. last_epoch (int): The index of last epoch. Default: -1. Example: >>> # Assuming optimizer uses lr = 0.05 for all groups >>> # lr = 0.05 if epoch < 30 >>> # lr = 0.005 if 30 <= epoch < 80 >>> # lr = 0.0005 if epoch >= 80 >>> scheduler = MultiStepLR(milestones=[30,80], gamma=0.1) >>> scheduler(optimizer) >>> for epoch in range(100): >>> train(...) >>> validate(...) >>> scheduler.step(), """ super().__init__(lr_scheduler.MultiStepLR, milestones=milestones, gamma=gamma, last_epoch=last_epoch)
Example #18
Source File: ssds_train.py From ssds.pytorch with MIT License | 6 votes |
def configure_lr_scheduler(self, optimizer, cfg): if cfg.SCHEDULER == 'step': scheduler = lr_scheduler.StepLR(optimizer, step_size=cfg.STEPS[0], gamma=cfg.GAMMA) elif cfg.SCHEDULER == 'multi_step': scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=cfg.STEPS, gamma=cfg.GAMMA) elif cfg.SCHEDULER == 'exponential': scheduler = lr_scheduler.ExponentialLR(optimizer, gamma=cfg.GAMMA) elif cfg.SCHEDULER == 'SGDR': scheduler = lr_scheduler.CosineAnnealingLR(optimizer, T_max=cfg.MAX_EPOCHS) else: AssertionError('scheduler can not be recognized.') return scheduler
Example #19
Source File: train.py From graph-generation with MIT License | 6 votes |
def train(args, dataloader, model): epoch = 1 optimizer = optim.Adam(list(model.parameters()), lr=args.lr) scheduler = MultiStepLR(optimizer, milestones=LR_milestones, gamma=args.lr) model.train() for epoch in range(5000): for batch_idx, data in enumerate(dataloader): model.zero_grad() features = data['features'].float() adj_input = data['adj'].float() features = Variable(features).cuda() adj_input = Variable(adj_input).cuda() loss = model(features, adj_input) print('Epoch: ', epoch, ', Iter: ', batch_idx, ', Loss: ', loss) loss.backward() optimizer.step() scheduler.step() break
Example #20
Source File: cifar100_DTC.py From DTC with MIT License | 5 votes |
def TEP_train(model, train_loader, eva_loader, args): optimizer = SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) w = 0 alpha = 0.6 ntrain = len(train_loader.dataset) Z = torch.zeros(ntrain, args.n_clusters).float().to(device) # intermediate values z_bars = torch.zeros(ntrain, args.n_clusters).float().to(device) # temporal outputs z_epoch = torch.zeros(ntrain, args.n_clusters).float().to(device) # current outputs for epoch in range(args.epochs): loss_record = AverageMeter() model.train() exp_lr_scheduler.step() for batch_idx, ((x, _), label, idx) in enumerate(tqdm(train_loader)): x = x.to(device) _, feat = model(x) prob = feat2prob(feat, model.center) loss = F.kl_div(prob.log(), args.p_targets[idx].float().to(device)) loss_record.update(loss.item(), x.size(0)) optimizer.zero_grad() loss.backward() optimizer.step() print('Train Epoch: {} Avg Loss: {:.4f}'.format(epoch, loss_record.avg)) _, _, _, probs = test(model, eva_loader, args, epoch) z_epoch = probs.float().to(device) Z = alpha * Z + (1. - alpha) * z_epoch z_bars = Z * (1. / (1. - alpha ** (epoch + 1))) if epoch % args.update_interval==0: print('updating target ...') args.p_targets = target_distribution(z_bars).float().to(device) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #21
Source File: utility.py From OISR-PyTorch with BSD 2-Clause "Simplified" License | 5 votes |
def make_scheduler(args, my_optimizer): if args.decay_type == 'step': scheduler_function = lrs.StepLR kwargs = {'step_size': args.lr_decay, 'gamma': args.gamma} elif args.decay_type.find('step') >= 0: scheduler_function = lrs.MultiStepLR milestones = list(map(lambda x: int(x), args.decay_type.split('-')[1:])) kwarg = {'milestones': milestones, 'gamma': args.gamma} return scheduler_function(my_optimizer, **kwargs)
Example #22
Source File: imagenet2cifar_DTC.py From DTC with MIT License | 5 votes |
def PI_train(model, train_loader, eva_loader, args): optimizer = SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) w = 0 for epoch in range(args.epochs): loss_record = AverageMeter() model.train() exp_lr_scheduler.step() w = args.rampup_coefficient * ramps.sigmoid_rampup(epoch, args.rampup_length) for batch_idx, ((x, x_bar), label, idx) in enumerate(tqdm(train_loader)): x, x_bar = x.to(device), x_bar.to(device) feat = model(x) feat_bar = model(x_bar) prob = feat2prob(feat, model.center) prob_bar = feat2prob(feat_bar, model.center) sharp_loss = F.kl_div(prob.log(), args.p_targets[idx].float().to(device)) consistency_loss = F.mse_loss(prob, prob_bar) loss = sharp_loss + w * consistency_loss loss_record.update(loss.item(), x.size(0)) optimizer.zero_grad() loss.backward() optimizer.step() print('Train Epoch: {} Avg Loss: {:.4f}'.format(epoch, loss_record.avg)) _, _, _, probs = test(model, eva_loader, args) if epoch % args.update_interval ==0: print('updating target ...') args.p_targets = target_distribution(probs) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #23
Source File: imagenet2cifar_DTC.py From DTC with MIT License | 5 votes |
def TE_train(model, train_loader, eva_loader, args): optimizer = SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) w = 0 alpha = 0.6 ntrain = len(train_loader.dataset) Z = torch.zeros(ntrain, args.n_clusters).float().to(device) # intermediate values z_ema = torch.zeros(ntrain, args.n_clusters).float().to(device) # temporal outputs z_epoch = torch.zeros(ntrain, args.n_clusters).float().to(device) # current outputs for epoch in range(args.epochs): loss_record = AverageMeter() model.train() exp_lr_scheduler.step() w = args.rampup_coefficient * ramps.sigmoid_rampup(epoch, args.rampup_length) for batch_idx, (x, label, idx) in enumerate(tqdm(train_loader)): x = x.to(device) feat = model(x) prob = feat2prob(feat, model.center) z_epoch[idx, :] = prob prob_bar = Variable(z_ema[idx, :], requires_grad=False) sharp_loss = F.kl_div(prob.log(), args.p_targets[idx].float().to(device)) consistency_loss = F.mse_loss(prob, prob_bar) loss = sharp_loss + w * consistency_loss loss_record.update(loss.item(), x.size(0)) optimizer.zero_grad() loss.backward() optimizer.step() Z = alpha * Z + (1. - alpha) * z_epoch z_ema = Z * (1. / (1. - alpha ** (epoch + 1))) print('Train Epoch: {} Avg Loss: {:.4f}'.format(epoch, loss_record.avg)) _, _, _, probs = test(model, eva_loader, args) if epoch % args.update_interval ==0: print('updating target ...') args.p_targets = target_distribution(probs) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #24
Source File: imagenet2cifar_DTC.py From DTC with MIT License | 5 votes |
def TEP_train(model, train_loader, eva_loader, args): optimizer = SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) w = 0 alpha = 0.6 ntrain = len(train_loader.dataset) Z = torch.zeros(ntrain, args.n_clusters).float().to(device) # intermediate values z_bars = torch.zeros(ntrain, args.n_clusters).float().to(device) # temporal outputs z_epoch = torch.zeros(ntrain, args.n_clusters).float().to(device) # current outputs for epoch in range(args.epochs): loss_record = AverageMeter() model.train() exp_lr_scheduler.step() for batch_idx, (x, label, idx) in enumerate(tqdm(train_loader)): x = x.to(device) feat = model(x) prob = feat2prob(feat, model.center) loss = F.kl_div(prob.log(), args.p_targets[idx].float().to(device)) loss_record.update(loss.item(), x.size(0)) optimizer.zero_grad() loss.backward() optimizer.step() print('Train Epoch: {} Avg Loss: {:.4f}'.format(epoch, loss_record.avg)) _, _, _, probs = test(model, eva_loader, args) z_epoch = probs.float().to(device) Z = alpha * Z + (1. - alpha) * z_epoch z_bars = Z * (1. / (1. - alpha ** (epoch + 1))) if epoch % args.update_interval ==0: print('updating target ...') args.p_targets = target_distribution(z_bars).float().to(device) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #25
Source File: scheduler_factory.py From kaggle-humpback with BSD 2-Clause "Simplified" License | 5 votes |
def multi_step(optimizer, last_epoch, milestones=[500, 5000], gamma=0.1, **_): if isinstance(milestones, str): milestones = eval(milestones) return lr_scheduler.MultiStepLR(optimizer, milestones=milestones, gamma=gamma, last_epoch=last_epoch)
Example #26
Source File: model_plain.py From KAIR with MIT License | 5 votes |
def define_scheduler(self): self.schedulers.append(lr_scheduler.MultiStepLR(self.G_optimizer, self.opt_train['G_scheduler_milestones'], self.opt_train['G_scheduler_gamma'] ))
Example #27
Source File: cifar100_DTC.py From DTC with MIT License | 5 votes |
def PI_train(model, train_loader, eva_loader, args): optimizer = SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) w = 0 for epoch in range(args.epochs): loss_record = AverageMeter() model.train() exp_lr_scheduler.step() w = args.rampup_coefficient * ramps.sigmoid_rampup(epoch, args.rampup_length) for batch_idx, ((x, x_bar), label, idx) in enumerate(tqdm(train_loader)): x, x_bar = x.to(device), x_bar.to(device) _, feat = model(x) _, feat_bar = model(x_bar) prob = feat2prob(feat, model.center) prob_bar = feat2prob(feat_bar, model.center) sharp_loss = F.kl_div(prob.log(), args.p_targets[idx].float().to(device)) consistency_loss = F.mse_loss(prob, prob_bar) loss = sharp_loss + w * consistency_loss loss_record.update(loss.item(), x.size(0)) optimizer.zero_grad() loss.backward() optimizer.step() print('Train Epoch: {} Avg Loss: {:.4f}'.format(epoch, loss_record.avg)) _, _, _, probs = test(model, eva_loader, args, epoch) if epoch % args.update_interval==0: print('updating target ...') args.p_targets = target_distribution(probs) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #28
Source File: cifar100_DTC.py From DTC with MIT License | 5 votes |
def TE_train(model, train_loader, eva_loader, args): optimizer = SGD(model.parameters(), lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) exp_lr_scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=args.milestones, gamma=args.gamma) w = 0 alpha = 0.6 ntrain = len(train_loader.dataset) Z = torch.zeros(ntrain, args.n_clusters).float().to(device) # intermediate values z_ema = torch.zeros(ntrain, args.n_clusters).float().to(device) # temporal outputs z_epoch = torch.zeros(ntrain, args.n_clusters).float().to(device) # current outputs for epoch in range(args.epochs): loss_record = AverageMeter() model.train() exp_lr_scheduler.step() w = args.rampup_coefficient * ramps.sigmoid_rampup(epoch, args.rampup_length) for batch_idx, ((x, _), label, idx) in enumerate(tqdm(train_loader)): x = x.to(device) _, feat = model(x) prob = feat2prob(feat, model.center) z_epoch[idx, :] = prob prob_bar = Variable(z_ema[idx, :], requires_grad=False) sharp_loss = F.kl_div(prob.log(), args.p_targets[idx].float().to(device)) consistency_loss = F.mse_loss(prob, prob_bar) loss = sharp_loss + w * consistency_loss loss_record.update(loss.item(), x.size(0)) optimizer.zero_grad() loss.backward() optimizer.step() Z = alpha * Z + (1. - alpha) * z_epoch z_ema = Z * (1. / (1. - alpha ** (epoch + 1))) print('Train Epoch: {} Avg Loss: {:.4f}'.format(epoch, loss_record.avg)) _, _, _, probs = test(model, eva_loader, args, epoch) if epoch % args.update_interval==0: print('updating target ...') args.p_targets = target_distribution(probs) torch.save(model.state_dict(), args.model_dir) print("model saved to {}.".format(args.model_dir))
Example #29
Source File: model_gan.py From KAIR with MIT License | 5 votes |
def define_optimizer(self): G_optim_params = [] for k, v in self.netG.named_parameters(): if v.requires_grad: G_optim_params.append(v) else: print('Params [{:s}] will not optimize.'.format(k)) self.G_optimizer = Adam(G_optim_params, lr=self.opt_train['G_optimizer_lr'], weight_decay=0) self.D_optimizer = Adam(self.netD.parameters(), lr=self.opt_train['D_optimizer_lr'], weight_decay=0) # ---------------------------------------- # define scheduler, only "MultiStepLR" # ----------------------------------------
Example #30
Source File: model_plain.py From KAIR with MIT License | 5 votes |
def define_optimizer(self): G_optim_params = [] for k, v in self.netG.named_parameters(): if v.requires_grad: G_optim_params.append(v) else: print('Params [{:s}] will not optimize.'.format(k)) self.G_optimizer = Adam(G_optim_params, lr=self.opt_train['G_optimizer_lr'], weight_decay=0) # ---------------------------------------- # define scheduler, only "MultiStepLR" # ----------------------------------------