class_docstr: A distribution generated by applying a sequence of transformations to
  a base distribution/
  
  Parameters
  ----------
  base_dist : Distribution
      Base distribution
  transforms : Transformation or List
      Transformation to be applied
docstr: Compute log-likelihood of `value` with `log_det_jacobian` and
  log-likelihood of the base distribution according to the following conclusion:
  
  Given that Y = T(X),
  log(p(y)) = log(p(x)) - log(|dy/dx|)
code: def log_prob(self, value):
      """
      Compute log-likelihood of `value` with `log_det_jacobian` and
      log-likelihood of the base distribution according to the following conclusion:
  
      Given that Y = T(X),
      log(p(y)) = log(p(x)) - log(|dy/dx|)
      """
      log_prob = 0.0
      y = value  # T_n(T_{n-1}(...T_1(x)))
      # Reverse `_transforms` to transform to the base distribution.
      for t in reversed(self._transforms):
          x = t.inv(y)
          log_prob = log_prob - sum_right_most(
              t.log_det_jacobian(x, y), self.event_dim - t.event_dim
          )
          y = x
      log_prob = log_prob + sum_right_most(
          self._base_dist.log_prob(y),
          self.event_dim - self._base_dist.event_dim,
      )
      return log_prob
  
file_path: mxnet/python/mxnet/gluon/probability/distributions/transformed_distribution.py
imports: from ..transformation import Transformation
  from .distribution import Distribution
  from .utils import sum_right_most
  from ....None import np
label_desc: Use image node_id 4 for calling the TransformedDistribution obj's underlying member method code with example usage: obj.log_prob(value) and returns: log_prob