code: def testEntropyLowerBoundMultivariate(self):
      for batch_shape in ((), (2,), (2, 3)):
          dist = make_multivariate_mixture(
              batch_shape=batch_shape,
              num_components=2,
              event_shape=(4,),
          )
          entropy_lower_bound = dist.entropy_lower_bound()
          self.assertEqual(batch_shape, entropy_lower_bound.shape)
  
          cat_probs = tf.math.softmax(dist.cat.logits)
          dist_entropy = [d.entropy() for d in dist.components]
  
          (
              entropy_lower_bound_value,
              cat_probs_value,
              dist_entropy_value,
          ) = self.evaluate(
              [entropy_lower_bound, cat_probs, dist_entropy]
          )
          self.assertEqual(batch_shape, entropy_lower_bound_value.shape)
  
          cat_probs_value = _swap_first_last_axes(cat_probs_value)
  
          # entropy_lower_bound = sum_i pi_i entropy_i
          # for i in num_components, batchwise.
          true_entropy_lower_bound = sum(
              [
                  c_p * m
                  for (c_p, m) in zip(
                      cat_probs_value, dist_entropy_value
                  )
              ]
          )
  
          self.assertAllClose(
              true_entropy_lower_bound, entropy_lower_bound_value
          )
  
imports: import contextlib
  import warnings
  import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import categorical
  from tensorflow_probability.python.distributions import dirichlet
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import gamma
  from tensorflow_probability.python.distributions import half_normal
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import mixture
  from tensorflow_probability.python.distributions import mvn_diag
  from tensorflow_probability.python.distributions import mvn_tril
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import hypothesis_testlib
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 22 for calling the MixtureTest obj's underlying member method code with example usage: obj.testEntropyLowerBoundMultivariate() without return types