code: def benchmarkSamplingMVNFull(self):
      tf1.logging.vlog(
          2,
          "mvn_full\tuse_gpu\tcomponents\tbatch\tfeatures\tsample\twall_time",
      )
  
      def psd(x):
          """Construct batch-wise PSD matrices."""
          return np.stack([np.dot(np.transpose(z), z) for z in x])
  
      def create_distribution(batch_size, num_components, num_features):
          cat = categorical.Categorical(
              logits=np.random.randn(batch_size, num_components)
          )
          mus = [
              tf.Variable(np.random.randn(batch_size, num_features))
              for _ in range(num_components)
          ]
          sigmas = [
              tf.Variable(
                  psd(
                      np.random.rand(
                          batch_size, num_features, num_features
                      )
                  )
              )
              for _ in range(num_components)
          ]
          components = list(
              mvn_tril.MultivariateNormalTriL(
                  loc=mu, scale_tril=tf.linalg.cholesky(sigma)
              )
              for (mu, sigma) in zip(mus, sigmas)
          )
          return mixture.Mixture(cat, components, validate_args=True)
  
      for use_gpu in False, True:
          if use_gpu and not tf.test.is_gpu_available():
              continue
          for num_components in 1, 8, 16:
              for batch_size in 1, 32:
                  for num_features in 1, 64, 512:
                      for sample_size in 1, 32, 128:
                          self._runSamplingBenchmark(
                              "mvn_full",
                              create_distribution=create_distribution,
                              use_gpu=use_gpu,
                              num_components=num_components,
                              batch_size=batch_size,
                              num_features=num_features,
                              sample_size=sample_size,
                          )
  
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 3 for calling the MixtureBenchmark obj's underlying member method code with example usage: obj.benchmarkSamplingMVNFull() and returns: np, mixture