code: def testHyperParamDTypeConversion(self):
      parameters = [tf.Variable([1.0, 2.0]), tf.Variable([3.0, 4.0])]
      updates = [tf.constant([5.0, 5.0]), tf.constant([3.0, 3.0])]
      dtype = tf.float32 if self.primary_device == "TPU" else tf.float64
      learning_rate = tf.Variable(0.1, dtype=dtype)
      decay = tf.Variable(0.9, dtype=dtype)
      momentum = tf.Variable(0.0, dtype=dtype)
      epsilon = tf.Variable(1e-7, dtype=dtype)
      optimizer = self.make_optimizer(
          learning_rate=learning_rate,
          decay=decay,
          momentum=momentum,
          epsilon=epsilon,
      )
      if optimizer_tests.is_tf_optimizer(optimizer):
          self.skipTest(
              "TF optimizers don't support automatic casting."
          )
  
      optimizer.apply(updates, parameters)
      self.assertAllClose(
          [[0.683772, 1.683772], [2.683772, 3.683772]],
          [x.numpy() for x in parameters],
      )
  
imports: from sonnet.src import test_utils
  from sonnet.src.optimizers import optimizer_tests
  from sonnet.src.optimizers import rmsprop
  import tensorflow
label_desc: Use image node_id 7 for calling the RMSPropTest obj's underlying member method code with example usage: obj.testHyperParamDTypeConversion() without return types