def METHOD_NAME(self):
    self.configure_optimizers()
    if isinstance(self.optimizer, tfa.optimizers.MultiOptimizer):
        optimizers = [optimizer_spec.optimizer for optimizer_spec in self.optimizer.optimizer_specs]
    else:
        optimizers = self.optimizer if isinstance(self.optimizer, (tuple, list)) else [self.optimizer]
    for optimizer in optimizers:
        scheduler = optimizer.learning_rate
        if isinstance(scheduler, tf.Variable):
            scheduler = scheduler * self.base_lr_reduction_factor_during_search
            optimizer.learning_rate = scheduler
            optimizer.lr = scheduler
        elif isinstance(scheduler, (schedules.CosineDecay, schedules.ExponentialDecay)):
            scheduler.initial_learning_rate *= self.base_lr_reduction_factor_during_search
        elif isinstance(scheduler, schedules.PiecewiseConstantDecay):
            scheduler.values = [lr * self.base_lr_reduction_factor_during_search for lr in scheduler.values]
        else:
            nncf_logger.warning(
                f"Learning rate scheduler {scheduler} is not supported yet. Won't change the learning rate."
            )
    self.training_epoch_count = 0
    self.best_val_metric_value = 0
    self.current_val_metric_value = 0