code: def learning_rate(self, learning_rate):
      if isinstance(
          learning_rate, learning_rate_schedule.LearningRateSchedule
      ):
          self._learning_rate = learning_rate
      elif callable(learning_rate):
          self._learning_rate = learning_rate
      else:
          if isinstance(
              self._learning_rate,
              learning_rate_schedule.LearningRateSchedule,
          ):
              raise TypeError(
                  "This optimizer was created with a `LearningRateSchedule`"
                  " object as its `learning_rate` constructor argument, "
                  "hence its learning rate is not settable. If you need the"
                  " learning rate to be settable, you should instantiate "
                  "the optimizer with a float `learning_rate` argument."
              )
          self._learning_rate.assign(learning_rate)
  
imports: import re
  import warnings
  import numpy
  from keras import backend
  from keras import initializers
  from keras import ops
  from keras.optimizers.schedules import learning_rate_schedule
  from keras.saving import serialization_lib
  from keras.utils import tracking
  from keras.utils.naming import auto_name
label_desc: Use image node_id 23 for calling the BaseOptimizer obj's underlying member method code with example usage: obj.learning_rate(learning_rate) without return types