code: def testCrossDeviceWithoutZeroDebias(self, distribution):
      with distribution.scope():
          var = variables.Variable([10.0, 11.0])
          val = constant_op.constant([1.0, 2.0])
          decay = 0.25
          # NOTE(josh11b): We currently generate an error if val is a PerReplica
          # value.
          assign = moving_averages.assign_moving_average(
              var, val, decay, zero_debias=False
          )
  
          self.evaluate(variables.global_variables_initializer())
          self.assertAllClose([10.0, 11.0], self.evaluate(var))
          self.evaluate(assign)
          average_val = [1.0, 2.0]
          val_weight = 1.0 - 0.25
          self.assertAllClose(
              [
                  10.0 * 0.25 + average_val[0] * val_weight,
                  11.0 * 0.25 + average_val[1] * val_weight,
              ],
              self.evaluate(var),
          )
          # Also try assign.op.
          self.evaluate(assign.op)
          orig_weight = 0.25 * 0.25
          val_weight = 1.0 - orig_weight
          self.assertAllClose(
              [
                  10.0 * orig_weight + average_val[0] * val_weight,
                  11.0 * orig_weight + average_val[1] * val_weight,
              ],
              self.evaluate(var),
          )
  
imports: from absl.testing import parameterized
  from tensorflow.python.distribute import combinations
  from tensorflow.python.distribute import strategy_combinations
  from tensorflow.python.distribute import strategy_test_lib
  from tensorflow.python.distribute import test_util
  from tensorflow.python.eager import def_function
  from tensorflow.python.eager import test
  from tensorflow.python.framework import constant_op
  from tensorflow.python.ops import variables
  from tensorflow.python.training import moving_averages
label_desc: Use image node_id 3 for calling the AssignMovingAveragesTest obj's underlying member method code with example usage: obj.testCrossDeviceWithoutZeroDebias(distribution) without return types