class_docstr: Adafactor with Multiple LR schedule.
code: def apply_grad(self, grad, var):
      if self.alt_lr_schedules is None or self.variable_search is None:
          return super(AdafactorWithMultiLRSchedule, self).apply_grad(
              grad, var
          )
  
      actual_lr_rates = compute_lr_for_step(
          self.alt_lr_schedules,
          self._learning_rate,
      )
      # Modify learning rate for exception variables
      for idx, variable_search in enumerate(self.variable_search):
          if re.search(variable_search, var.name) is not None:
              # finds variable in LR schedule
              old_lr = self._learning_rate
              # get n-th learning rate schedule
              self._learning_rate = actual_lr_rates[idx]
              assignments = super(
                  AdafactorWithMultiLRSchedule, self
              ).apply_grad(grad, var)
              self._learning_rate = old_lr
          else:
              assignments = super(
                  AdafactorWithMultiLRSchedule, self
              ).apply_grad(grad, var)
      return assignments
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import functools
  import re
  import gin
  from mesh_tensorflow import layers
  from mesh_tensorflow import ops_with_redefined_builtins
  import tensorflow.compat.v1
label_desc: Use image node_id 2 for calling the AdafactorWithMultiLRSchedule obj's underlying member method code with example usage: obj.apply_grad(grad, var) and returns: assignments, super