class_docstr: RMSProp module.
  
  See: http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf
  
  Maintain a moving (discounted) average of the square of updates. Divides each
  update by the root of this average.
  
      ms <- decay * ms + (1-decay) * update^2
      mom <- momentum * mom + learning_rate * update / sqrt(ms + epsilon)
      parameter <- parameter - mom
  
  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:
  
      mg <- decay * mg + (1-decay) * update
      ms <- decay * ms + (1-decay) * update^2
      mom <- momentum * mom + learning_rate * update / sqrt(ms - mg^2 + epsilon)
      parameter <- parameter - mom
  
  Attributes:
    learning_rate: Learning rate.
    decay: Learning rate decay over each update.
    momentum: Momentum scalar.
    epsilon: Small value to avoid zero denominator.
    centered: `True` if centered.
    mom: Accumulated mom for each parameter.
    ms: Accumulated ms for each parameter.
    mg: Accumulated mg for each parameter.
code: def _initialize(self, parameters: Sequence[tf.Variable]):
      zero_var = lambda p: utils.variable_like(p, trainable=False)
      with tf.name_scope("momentum"):
          self.mom.extend(zero_var(p) for p in parameters)
      with tf.name_scope("rms"):
          self.ms.extend(zero_var(p) for p in parameters)
      if self.centered:
          with tf.name_scope("mg"):
              self.mg.extend(zero_var(p) for p in parameters)
  
file_path: sonnet/sonnet/src/optimizers/rmsprop.py
imports: import itertools
  from typing import Optional, Sequence, Union
  from sonnet.src import base
  from sonnet.src import once
  from sonnet.src import types
  from sonnet.src import utils
  from sonnet.src.optimizers import optimizer_utils
  import tensorflow
label_desc: Use image node_id 2 for calling the RMSProp obj's underlying member method code with example usage: obj._initialize(parameters) without return types