class_docstr: A LRScheduler which uses fvcore :class:`ParamScheduler` to multiply the
  learning rate of each param in the optimizer.
  Every step, the learning rate of each parameter becomes its initial value
  multiplied by the output of the given :class:`ParamScheduler`.
  
  The absolute learning rate value of each parameter can be different.
  This scheduler can be used as long as the relative scale among them do
  not change during training.
  
  Examples:
  ::
      LRMultiplier(
          opt,
          WarmupParamScheduler(
              MultiStepParamScheduler(
                  [1, 0.1, 0.01],
                  milestones=[60000, 80000],
                  num_updates=90000,
              ), 0.001, 100 / 90000
          ),
          max_iter=90000
      )
class_docstr_tok: ["A","LRScheduler","which","uses","fvcore",":","class",":","`","ParamScheduler","`","to","multiply","the","learning","rate","of","each","param","in","the","optimizer",".","Every","step",",","the","learning","rate","of","each","parameter","becomes","its","initial","value","multiplied","by","the","output","of","the","given",":","class",":","`","ParamScheduler","`",".","The","absolute","learning","rate","value","of","each","parameter","can","be","different",".","This","scheduler","can","be","used","as","long","as","the","relative","scale","among","them","do","not","change","during","training",".","Examples",":",":",":","LRMultiplier","(","opt",",","WarmupParamScheduler","(","MultiStepParamScheduler","(","[","1",",","0.1",",","0.01","]",",","milestones=","[","60000",",","80000","]",",","num_updates=90000",",",")",",","0.001",",","100","\/","90000",")",",","max_iter=90000",")"]
docstr: Args:
      optimizer, last_iter: See ``torch.optim.lr_scheduler.LRScheduler``.
          ``last_iter`` is the same as ``last_epoch``.
      multiplier: a fvcore ParamScheduler that defines the multiplier on
          every LR of the optimizer
      max_iter: the total number of training iterations
docstr_tok: ["Args",":","optimizer",",","last_iter",":","See","``","torch.optim.lr_scheduler.LRScheduler","``",".","``","last_iter","``","is","the","same","as","``","last_epoch","``",".","multiplier",":","a","fvcore","ParamScheduler","that","defines","the","multiplier","on","every","LR","of","the","optimizer","max_iter",":","the","total","number","of","training","iterations"]
code: def __init__(
      self,
      optimizer: torch.optim.Optimizer,
      multiplier: ParamScheduler,
      max_iter: int,
      last_iter: int = -1,
  ):
      """
      Args:
          optimizer, last_iter: See ``torch.optim.lr_scheduler.LRScheduler``.
              ``last_iter`` is the same as ``last_epoch``.
          multiplier: a fvcore ParamScheduler that defines the multiplier on
              every LR of the optimizer
          max_iter: the total number of training iterations
      """
      if not isinstance(multiplier, ParamScheduler):
          raise ValueError(
              "_LRMultiplier(multiplier=) must be an instance of fvcore "
              f"ParamScheduler. Got {multiplier} instead."
          )
      self._multiplier = multiplier
      self._max_iter = max_iter
      super().__init__(optimizer, last_epoch=last_iter)
  
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 1 to create a new LRMultiplier object from inherited base classes: LRScheduler with example: obj = LRMultiplier(optimizer, multiplier, max_iter, last_iter)