# Copyright (c) OpenMMLab. All rights reserved. from mmengine.optim.optimizer.optimizer_wrapper import OptimWrapper from mmengine.optim.scheduler.lr_scheduler import MultiStepLR from mmengine.runner.loops import EpochBasedTrainLoop, TestLoop, ValLoop from torch.optim.adamw import AdamW # optimizer # This schedule is mainly used by models on indoor dataset, # e.g., VoteNet on SUNRGBD and ScanNet lr = 0.008 # max learning rate optim_wrapper = dict( type=OptimWrapper, optimizer=dict(type=AdamW, lr=lr, weight_decay=0.01), clip_grad=dict(max_norm=10, norm_type=2), ) # training schedule for 3x train_cfg = dict(type=EpochBasedTrainLoop, max_epochs=36, val_interval=1) val_cfg = dict(type=ValLoop) test_cfg = dict(type=TestLoop) # learning rate param_scheduler = [ dict( type=MultiStepLR, begin=0, end=36, by_epoch=True, milestones=[24, 32], gamma=0.1) ] # Default setting for scaling LR automatically # - `enable` means enable scaling LR automatically # or not by default. # - `base_batch_size` = (4 GPUs) x (8 samples per GPU). auto_scale_lr = dict(enable=False, base_batch_size=32)