class_docstr: Tests the correctness of the Y = JointMap({nested}) transformation.
code: def testBatchShapeBroadcasts(self):
      bij = joint_map.JointMap(
          {"a": exp.Exp(), "b": scale.Scale(10.0)}, validate_args=True
      )
      self.assertStartsWith(bij.name, "jointmap_of_exp_and_scale")
  
      a = np.asarray(
          [[[1, 2]], [[2, 3]]], dtype=np.float32
      )  # shape=[2, 1, 2]
      b = np.asarray([[0, 1, 2]], dtype=np.float32)  # shape=[1, 3]
  
      inputs = {
          "a": a,
          "b": b,
      }  # Could be inputs to forward or inverse.
  
      self.assertAllClose(
          a.sum(axis=-1) + np.log(10.0),
          self.evaluate(
              bij.forward_log_det_jacobian(inputs, {"a": 1, "b": 0})
          ),
      )
  
      self.assertAllClose(
          a.sum(axis=-1) + 3 * np.log(10.0),
          self.evaluate(
              bij.forward_log_det_jacobian(inputs, {"a": 1, "b": 1})
          ),
      )
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector_test_util
  from tensorflow_probability.python.bijectors import exp
  from tensorflow_probability.python.bijectors import invert
  from tensorflow_probability.python.bijectors import joint_map
  from tensorflow_probability.python.bijectors import ldj_ratio
  from tensorflow_probability.python.bijectors import reshape
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.bijectors import shift
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 4 for calling the JointMapBijectorTest obj's underlying member method code with example usage: obj.testBatchShapeBroadcasts() without return types