Build an optimizer from config.
(cfg: CfgNode, model: torch.nn.Module)
| 108 | |
| 109 | |
| 110 | def build_optimizer(cfg: CfgNode, model: torch.nn.Module) -> torch.optim.Optimizer: |
| 111 | """ |
| 112 | Build an optimizer from config. |
| 113 | """ |
| 114 | params = get_default_optimizer_params( |
| 115 | model, |
| 116 | base_lr=cfg.SOLVER.BASE_LR, |
| 117 | weight_decay=cfg.SOLVER.WEIGHT_DECAY, |
| 118 | weight_decay_norm=cfg.SOLVER.WEIGHT_DECAY_NORM, |
| 119 | bias_lr_factor=cfg.SOLVER.BIAS_LR_FACTOR, |
| 120 | weight_decay_bias=cfg.SOLVER.WEIGHT_DECAY_BIAS, |
| 121 | ) |
| 122 | return maybe_add_gradient_clipping(cfg, torch.optim.SGD)( |
| 123 | params, cfg.SOLVER.BASE_LR, momentum=cfg.SOLVER.MOMENTUM, nesterov=cfg.SOLVER.NESTEROV |
| 124 | ) |
| 125 | |
| 126 | |
| 127 | def get_default_optimizer_params( |
no test coverage detected