code: def testParallelVarianceCombinesGroups(self):
      x1 = tf.constant(np.random.randn(5, 10))
      x2 = tf.constant(np.random.randn(15, 10))
      n1 = 5
      n2 = 15
      avg1 = tf.math.reduce_mean(x1, axis=[0])
      m2_1 = tf.math.reduce_sum(
          tf.math.squared_difference(x1, avg1), axis=[0]
      )
      avg2 = tf.math.reduce_mean(x2, axis=[0])
      m2_2 = tf.math.reduce_sum(
          tf.math.squared_difference(x2, avg2), axis=[0]
      )
      m2_c = m2_2 * 0.0
      n, avg, m2, _ = tensor_normalizer.parallel_variance_calculation(
          n1, avg1, m2_1, n2, avg2, m2_2, m2_c
      )
      var = m2 / n
      avg_true, var_true = tf.nn.moments(
          tf.concat((x1, x2), axis=0), axes=[0]
      )
      avg, var, avg_true, var_true = self.evaluate(
          (avg, var, avg_true, var_true)
      )
      self.assertAllClose(avg, avg_true)
      self.assertAllClose(var, var_true)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import functools
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tf_agents.specs import tensor_spec
  from tf_agents.utils import tensor_normalizer
label_desc: Use image node_id 3 for calling the ParallelVarianceTest obj's underlying member method code with example usage: obj.testParallelVarianceCombinesGroups() without return types