class_docstr: A distribution obtained by applying a sequence of transformations on top
  of a base distribution.
code: def __init__(
      self,
      base_distribution: Distribution,
      transforms: List[bij.Bijection],
  ) -> None:
      self.base_distribution = base_distribution
      self.transforms = transforms
      self.is_reparameterizable = (
          self.base_distribution.is_reparameterizable
      )
  
      # use these to cache shapes and avoid recomputing all steps
      # the reason we cannot do the computations here directly
      # is that this constructor would fail in mx.symbol mode
      self._event_dim: Optional[int] = None
      self._event_shape: Optional[Tuple] = None
      self._batch_shape: Optional[Tuple] = None
  
imports: from typing import Any, List, Optional, Tuple
  import mxnet
  import numpy
  from mxnet import autograd
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from .None import bijection
  from .distribution import Distribution, _index_tensor, getF
  from .bijection import AffineTransformation
label_desc: Use image node_id 1 to create a new TransformedDistribution object from inherited base classes: Distribution with example: obj = TransformedDistribution(base_distribution, transforms)