code: def get_lr(self) -> List[float]:
      warmup_factor = _get_warmup_factor_at_iter(
          self.warmup_method,
          self.last_epoch,
          self.warmup_iters,
          self.warmup_factor,
      )
      # Different definitions of half-cosine with warmup are possible. For
      # simplicity we multiply the standard half-cosine schedule by the warmup
      # factor. An alternative is to start the period of the cosine at warmup_iters
      # instead of at 0. In the case that warmup_iters << max_iters the two are
      # very close to each other.
      return [
          base_lr
          * warmup_factor
          * 0.5
          * (1.0 + math.cos(math.pi * self.last_epoch / self.max_iters))
          for base_lr in self.base_lrs
      ]
  
imports: import logging
  import math
  from bisect import bisect_right
  from typing import List
  import torch
  from fvcore.common.param_scheduler import CompositeParamScheduler, ConstantParamScheduler, LinearParamScheduler, ParamScheduler
label_desc: Use image node_id 2 for calling the WarmupCosineLR obj's underlying member method code with example usage: obj.get_lr() and returns: unknown