code: def __init__(self, opts) -> None:
      warmup_iterations = getattr(
          opts, "scheduler.warmup_iterations", None
      )
      super().__init__()
      self.opts = opts
      self.round_places = 8
      self.lr_multipliers = getattr(opts, "optim.lr_multipliers", None)
  
      self.warmup_iterations = (
          max(warmup_iterations, 0)
          if warmup_iterations is not None
          else 0
      )
  
      warmup_init_lr = getattr(opts, "scheduler.warmup_init_lr", 1e-7)
      self.warmup_init_lr = warmup_init_lr
  
      # Because of variable batch sizes, we can't determine exact number of epochs in warm-up phase. This
      # may result in different LR schedules when we run epoch- and iteration-based schedulers.
      # To reduce these differences, we use adjust_period_for_epochs arguments.
      # For epoch-based scheduler, this parameter value should be enabled.
      self.adjust_period = getattr(
          opts, "scheduler.adjust_period_for_epochs", False
      )
      self.warmup_epochs = 0
  
file_path: ml-cvnets/optim/scheduler/base_scheduler.py
imports: import argparse
  from utils import logger
label_desc: Use image node_id 1 to create a new BaseLRScheduler object from inherited base classes: object with example: obj = BaseLRScheduler(opts)