code: def testBasic(self):
      for i, dtype in enumerate(
          [dtypes.half, dtypes.float32, dtypes.float64]
      ):
          # Note that we name the variables uniquely here since the variables don't
          # seem to be getting deleted at the end of the loop.
          var0 = resource_variable_ops.ResourceVariable(
              [1.0, 2.0], dtype=dtype, name="a_%d" % i
          )
          var1 = resource_variable_ops.ResourceVariable(
              [3.0, 4.0], dtype=dtype, name="b_%d" % i
          )
  
          def loss():
              return (
                  5 * var0 + 3 * var1
              )  # pylint: disable=cell-var-from-loop
  
          # Note that for eager execution, minimize expects a function instead of a
          # Tensor.
          global_step = resource_variable_ops.ResourceVariable(
              array_ops.zeros([], dtypes.int64),
              name="global_step_%d" % i,
          )
          sgd_op = gradient_descent.GradientDescentOptimizer(3.0)
  
          self.evaluate(variables.global_variables_initializer())
          # Fetch params to validate initial values
          self.assertAllClose([1.0, 2.0], self.evaluate(var0))
          self.assertAllClose([3.0, 4.0], self.evaluate(var1))
          # Run 1 step of sgd through optimizer
          opt_op = sgd_op.minimize(loss, global_step, [var0, var1])
          self.evaluate(opt_op)
          # Validate updated params
          self.assertAllClose([-14.0, -13.0], self.evaluate(var0))
          self.assertAllClose([-6.0, -5.0], self.evaluate(var1))
  
imports: from tensorflow.python.distribute import cross_device_ops
  from tensorflow.python.distribute import distribute_utils
  from tensorflow.python.distribute import mirrored_strategy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import clip_ops
  from tensorflow.python.ops import gradients_util
  from tensorflow.python.ops import resource_variable_ops
  from tensorflow.python.ops import state_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.platform import test
  from tensorflow.python.training import adam
  from tensorflow.python.training import gradient_descent
label_desc: Use image node_id 1 for calling the OptimizerTest obj's underlying member method code with example usage: obj.testBasic() and returns: unknown