class_docstr: Scheduler that decays by a multiplicative rate when valid loss plateaus.
code: def valid_step(self, metrics_dict):
      if self._is_lr_warming_up():
          # we're not done warming up, so don't start using validation
          # metrics to adjust schedule
          return
      if "loss" not in metrics_dict:
          # nothing to step on, just skip
          warn_once(
              "LR scheduler expected to see loss metric, but didn't."
          )
          return
      self.scheduler.step(metrics_dict["loss"])
  
imports: import math
  from typing import Optional
  from parlai.core.params import ParlaiParser
  from parlai.core.opt import Opt
  from abc import abstractmethod
  from torch import optim
  import numpy
  from parlai.core.exceptions import StopTrainException
  from parlai.utils.misc import warn_once
label_desc: Use image node_id 3 for calling the ReduceOnPlateauLRScheduler obj's underlying member method code with example usage: obj.valid_step(metrics_dict) without return types