class_docstr: Composes multiple transforms in a chain.
class_docstr_tok: ["Composes","multiple","transforms","in","a","chain","."]
code: def log_det_jacobian(self, x, y):
      if not self._parts:
          return np.zeros_like(
              x
          )  # pylint: disable=too-many-function-args
      result = 0
      x_prime = None
      for t in self._parts[:-1]:
          x_prime = t(x)
          result = result + sum_right_most(
              t.log_det_jacobian(x, x_prime),
              self.event_dim - t.event_dim,
          )
          x = x_prime
      t_last = self._parts[-1]
      result = result + sum_right_most(
          t_last.log_det_jacobian(x, y),
          self.event_dim - t_last.event_dim,
      )
  
      return result
  
imports: import weakref
  from ..distributions.utils import _clip_prob, cached_property, sum_right_most
  from ...block import HybridBlock
  from ....None import np, npx
label_desc: Use image node_id 6 for calling the ComposeTransform obj's underlying member method code with example usage: obj.log_det_jacobian(x, y) and returns: result, np