code: def test_multipart_bijector(self):
      dist = jdn.JointDistributionNamed(
          {
              "a": exponential.Exponential(1.0),
              "b": normal.Normal(0.0, 1.0),
              "c": lambda b, a: sample.Sample(
                  normal.Normal(b, a), sample_shape=[5]
              ),
          }
      )
  
      surrogate_posterior = self._initialize_surrogate(
          "build_factored_surrogate_posterior",
          seed=test_util.test_seed(),
          event_shape=dist.event_shape,
          bijector=(dist.experimental_default_event_space_bijector()),
          validate_args=True,
      )
      # Test that the posterior has the specified event shape(s).
      self.assertAllEqualNested(
          self.evaluate(dist.event_shape_tensor()),
          self.evaluate(surrogate_posterior.event_shape_tensor()),
      )
  
      posterior_sample_ = self.evaluate(
          surrogate_posterior.sample(seed=test_util.test_seed())
      )
      posterior_logprob_ = self.evaluate(
          surrogate_posterior.log_prob(posterior_sample_)
      )
  
      # Test that all sample Tensors have the expected shapes.
      check_shape = lambda s, x: self.assertAllEqual(s, x.shape)
      self.assertAllAssertsNested(
          check_shape, dist.event_shape, posterior_sample_
      )
  
      # Test that samples are finite and not NaN.
      self.assertAllAssertsNested(
          self.assertAllFinite, posterior_sample_
      )
  
      # Test that logprob is scalar, finite, and not NaN.
      self.assertEmpty(posterior_logprob_.shape)
      self.assertAllFinite(posterior_logprob_)
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import exp
  from tensorflow_probability.python.bijectors import fill_triangular
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import joint_map
  from tensorflow_probability.python.bijectors import masked_autoregressive
  from tensorflow_probability.python.bijectors import sigmoid
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import deterministic
  from tensorflow_probability.python.distributions import exponential
  from tensorflow_probability.python.distributions import gamma
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import joint_distribution_coroutine
  from tensorflow_probability.python.distributions import joint_distribution_named
  from tensorflow_probability.python.distributions import joint_distribution_sequential
  from tensorflow_probability.python.distributions import laplace
  from tensorflow_probability.python.distributions import logistic
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.distributions import sample
  from tensorflow_probability.python.distributions import student_t
  from tensorflow_probability.python.experimental.vi import surrogate_posteriors
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.internal import tf_keras
  from tensorflow_probability.python.vi import optimization
  from tensorflow.python.util import nest
label_desc: Use image node_id 6 for calling the FactoredSurrogatePosterior obj's underlying member method code with example usage: obj.test_multipart_bijector() without return types