class_docstr: RMSProp optimizer.
  
  Uses optimizer weights ("slots") to maintain a root-mean-square exponentially
  decaying average of gradients from prior training batches.
code: def update(self, step, grads, weights, avg_sq_grad, opt_params):
      del step
      lr = opt_params["learning_rate"]
      gamma = opt_params["gamma"]
      eps = opt_params["eps"]
      avg_sq_grad = avg_sq_grad * gamma + grads**2 * (1.0 - gamma)
      weights = weights - (
          lr * grads / (jnp.sqrt(avg_sq_grad) + eps)
      ).astype(weights.dtype)
      return weights, avg_sq_grad
  
imports: from trax.fastmath import numpy
  from trax.optimizers import base
label_desc: Use image node_id 3 for calling the RMSProp obj's underlying member method code with example usage: obj.update(step, grads, weights, avg_sq_grad, opt_params) and returns: weights,  avg_sq_grad