code: def on_epoch_end(self, epoch, logs=None):
      super(LearningRateWarmupCallbackImpl, self).on_epoch_end(
          epoch, logs
      )
  
      if (
          epoch == self.end_epoch - 1
          and self.verbose > 0
          and hvd.rank() == 0
      ):
          new_lr = self.backend.get_value(self.model.optimizer.lr)
          print(
              "\nEpoch %d: finished gradual learning rate warmup to %g."
              % (epoch + 1, new_lr)
          )
  
imports: from packaging import version
  import warnings
  import horovod.tensorflow
  import tensorflow
label_desc: Use image node_id 2 for calling the LearningRateWarmupCallbackImpl obj's underlying member method code with example usage: obj.on_epoch_end(epoch, logs) without return types