text: from tensorflow.keras import callbacks
  import math
  
  
  class CosineAnnealingScheduler(callbacks.LearningRateScheduler):
      def __init__(self, epochs_per_cycle, lr_min, lr_max, verbose=0):
          super(callbacks.LearningRateScheduler, self).__init__()
          self.verbose = verbose
          self.lr_min = lr_min
          self.lr_max = lr_max
          self.epochs_per_cycle = epochs_per_cycle
  
      def schedule(self, epoch, lr):
          return self.lr_min + (self.lr_max - self.lr_min) *\
                 (1 + math.cos(math.pi * (epoch % self.epochs_per_cycle) / self.epochs_per_cycle)) / 2