code: def _kl_transformed_transformed(a, b, name=None):
      """Calculate the batched KL divergence KL(a || b) with a and b Transformed.
  
      Args:
        a: instance of a TransformedDistribution object.
        b: instance of a TransformedDistribution object.
        name: Name to use for created operations.
          Default value: `None` (i.e., `'kl_normal_normal'`).
  
      Returns:
        kl_div: Batchwise KL(a || b)
  
      Raises:
        NotImplementedError: If `a.bijector != b.bijector`.
      """
      with tf.name_scope(name or "kl_transformed_transformed"):
          if a.bijector == b.bijector:
              return kullback_leibler.kl_divergence(
                  a.distribution, b.distribution
              )
      raise NotImplementedError(
          "Unable to calculate KL divergence between {} and {} because "
          "their bijectors are not equal: {} vs. {}".format(
              a, b, a.bijector, b.bijector
          )
      )
  
imports: import functools
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import ldj_ratio
  from tensorflow_probability.python.distributions import batch_broadcast
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import log_prob_ratio
  from tensorflow_probability.python.internal import auto_composite_tensor
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensorshape_util
label_desc: Use image node_id 2 for calling a global function with example usage: _kl_transformed_transformed(a, b, name) and returns: kullback_leibler