class_docstr: Optimizer that implements the RMSprop algorithm.
  
  The gist of RMSprop is to:
  
  - Maintain a moving (discounted) average of the square of gradients
  - Divide the gradient by the root of this average
  
  This implementation of RMSprop uses plain momentum, not Nesterov momentum.
  
  The centered version additionally maintains a moving average of the
  gradients, and uses that average to estimate the variance.
  
  Args:
      learning_rate: A float, a
          `keras.optimizers.schedules.LearningRateSchedule` instance, or
          a callable that takes no arguments and returns the actual value to
          use. The learning rate. Defaults to `0.001`.
      rho: float, defaults to 0.9. Discounting factor for the old gradients.
      momentum: float, defaults to 0.0. If not 0.0., the optimizer tracks the
          momentum value, with a decay rate equals to `1 - momentum`.
      epsilon: A small constant for numerical stability. This epsilon is
          "epsilon hat" in the Kingma and Ba paper (in the formula just before
          Section 2.1), not the epsilon in Algorithm 1 of the paper. Defaults
          to 1e-7.
      centered: Boolean. If `True`, gradients are normalized by the estimated
          variance of the gradient; if False, by the uncentered second moment.
          Setting this to `True` may help with training, but is slightly more
          expensive in terms of computation and memory. Defaults to `False`.
      {{base_optimizer_keyword_args}}
  
  Usage:
  
  >>> opt = keras.optimizers.RMSprop(learning_rate=0.1)
  >>> var1 = keras.backend.Variable(10.0)
  >>> loss = lambda: (var1 ** 2) / 2.0  # d(loss) / d(var1) = var1
  >>> opt.minimize(loss, [var1])
  >>> var1
  9.683772
  
  Reference:
  
  - [Hinton, 2012](
      http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf)
code: def __init__(
      self,
      learning_rate=0.001,
      rho=0.9,
      momentum=0.0,
      epsilon=1e-7,
      centered=False,
      weight_decay=None,
      clipnorm=None,
      clipvalue=None,
      global_clipnorm=None,
      use_ema=False,
      ema_momentum=0.99,
      ema_overwrite_frequency=100,
      name="rmsprop",
      **kwargs,
  ):
      super().__init__(
          learning_rate=learning_rate,
          weight_decay=weight_decay,
          clipnorm=clipnorm,
          clipvalue=clipvalue,
          global_clipnorm=global_clipnorm,
          use_ema=use_ema,
          ema_momentum=ema_momentum,
          ema_overwrite_frequency=ema_overwrite_frequency,
          name=name,
          **kwargs,
      )
      self.rho = rho
      self.momentum = momentum
      self.epsilon = epsilon
      self.centered = centered
  
file_path: keras/keras/optimizers/rmsprop.py
imports: from keras import ops
  from keras.api_export import keras_export
  from keras.optimizers import optimizer
label_desc: Use image node_id 1 to create a new RMSprop object from inherited base classes: optimizer with example: obj = RMSprop(learning_rate, rho, momentum, epsilon, centered, weight_decay, clipnorm, clipvalue, global_clipnorm, use_ema, ema_momentum, ema_overwrite_frequency, name)