docstr: Constructs an instance for linear annealing learning rate scheduler.
  
  Args:
      max_step: maximum number of train step.
      base_lr: base learning rate.
      is_cycle: trigger cyclical learning rate multiplier when step
          exceeds max_step.
      min_lr: minimum learning rate at max_step.
docstr_tok: ["Constructs","an","instance","for","linear","annealing","learning","rate","scheduler",".","Args",":","max_step",":","maximum","number","of","train","step",".","base_lr",":","base","learning","rate",".","is_cycle",":","trigger","cyclical","learning","rate","multiplier","when","step","exceeds","max_step",".","min_lr",":","minimum","learning","rate","at","max_step","."]
code: def __init__(
      self,
      max_step: float,
      base_lr: float = 1.0,
      is_cycle: bool = True,
      min_lr: float = 0.0,
  ):
      """Constructs an instance for linear annealing learning rate scheduler.
  
      Args:
          max_step: maximum number of train step.
          base_lr: base learning rate.
          is_cycle: trigger cyclical learning rate multiplier when step
              exceeds max_step.
          min_lr: minimum learning rate at max_step.
      """
      super().__init__(base_lr=base_lr)
      assert (
          base_lr >= min_lr
      ), "base_lr should be greater than or equal to min_lr."
      self.max_step = max_step
      self.is_cycle = is_cycle
      self.min_lr_multiplier = min_lr / self.base_lr
  
file_path: objax/objax/optimizer/scheduler.py
imports: import abc
  from typing import List, Tuple, Union
  import jax.numpy
label_desc: Use image node_id 1 to create a new LinearAnnealing object from inherited base classes: Scheduler with example: obj = LinearAnnealing(max_step, base_lr, is_cycle, min_lr)