class_docstr: Callback to update learning rate on every batch (not epoch boundaries).
  
  N.B. Only support Keras optimizers, not TF optimizers.
  
  Attributes:
      schedule: a function that takes an epoch index and a batch index as input
          (both integer, indexed from 0) and returns a new learning rate as
          output (float).
code: def on_epoch_begin(self, epoch, logs=None):
      if not hasattr(self.model.optimizer, "learning_rate"):
          raise ValueError(
              'Optimizer must have a "learning_rate" attribute.'
          )
      self.epochs += 1
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl import flags
  from absl import logging
  import numpy
  import tensorflow
  from official.benchmark.models import cifar_preprocessing
  from official.benchmark.models import resnet_cifar_model
  from official.benchmark.models import synthetic_util
  from official.utils.flags import core
  from official.utils.misc import distribution_utils
  from official.utils.misc import keras_utils
  from official.vision.image_classification.resnet import common
label_desc: Use image node_id 2 for calling the LearningRateBatchScheduler obj's underlying member method code with example usage: obj.on_epoch_begin(epoch, logs) without return types