Skip to content

Commit dde173d

Browse files
committed
Update to learning rate decay
1 parent e942c5d commit dde173d

File tree

1 file changed

+6
-18
lines changed

1 file changed

+6
-18
lines changed

imagenet/main.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,7 @@ def main_worker(gpu, ngpus_per_node, args):
270270
if args.distributed:
271271
train_sampler.set_epoch(epoch)
272272

273-
if args.arch != 'googlenet':
274-
adjust_learning_rate(optimizer, epoch, args)
273+
adjust_learning_rate(optimizer, epoch, args)
275274

276275
# train for one epoch
277276
train(train_loader, model, criterion, optimizer, epoch, args)
@@ -313,11 +312,6 @@ def train(train_loader, model, criterion, optimizer, epoch, args):
313312
input = input.cuda(args.gpu, non_blocking=True)
314313
target = target.cuda(args.gpu, non_blocking=True)
315314

316-
if args.arch == 'googlenet':
317-
iter = len(train_loader) * epoch + i
318-
max_iter = 40000 * args.epochs
319-
poly_lr_scheduler(optimizer, args.lr, iter, max_iter=max_iter, power=0.5)
320-
321315
# compute output
322316

323317
if args.arch.startswith('googlenet'):
@@ -428,18 +422,12 @@ def update(self, val, n=1):
428422

429423
def adjust_learning_rate(optimizer, epoch, args):
430424
"""Sets the learning rate to the initial LR decayed by a factor of 10 every 30 epochs."""
431-
lr = args.lr * (0.1 ** (epoch // 30))
432-
433-
for param_group in optimizer.param_groups:
434-
param_group['lr'] = lr
435-
436-
437-
def poly_lr_scheduler(optimizer, init_lr, iter, max_iter=100, power=0.5):
438-
439-
if iter >= max_iter:
440-
return
425+
if args.arch.startswith('googlenet'):
426+
power = 0.9 if args.arch == 'googlenet_bn' else 0.5
427+
lr = args.lr * (1 - epoch / float(args.epochs)) ** power
428+
else:
429+
lr = args.lr * (0.1 ** (epoch // 30))
441430

442-
lr = init_lr * (1 - iter / max_iter) ** power
443431
for param_group in optimizer.param_groups:
444432
param_group['lr'] = lr
445433

0 commit comments

Comments
 (0)