class_docstr: Polynomial LR scheduler
code: def get_lr(self, epoch: int, curr_iter: int) -> float:
      if curr_iter < self.warmup_iterations:
          curr_lr = self.warmup_init_lr + curr_iter * self.warmup_step
          self.warmup_epochs = epoch
      else:
          if self.is_iter_based:
              factor = (
                  curr_iter - self.warmup_iterations
              ) / self.max_iterations
          else:
              adjust_num = (
                  self.warmup_epochs + 1 if self.adjust_period else 0
              )
              adjust_den = (
                  self.warmup_epochs if self.adjust_period else 0
              )
              factor = (epoch - adjust_num) / (
                  self.max_epochs - adjust_den
              )
          curr_lr = (self.start_lr - self.end_lr) * (
              (1.0 - factor) ** self.power
          ) + self.end_lr
      return max(0.0, curr_lr)
  
file_path: ml-cvnets/optim/scheduler/polynomial.py
imports: import argparse
  from optim.scheduler import SCHEDULER_REGISTRY
  from optim.scheduler.base_scheduler import BaseLRScheduler
label_desc: Use image node_id 3 for calling the PolynomialScheduler obj's underlying member method code with example usage: obj.get_lr(epoch, curr_iter) and returns: max