class_docstr: Class to connect a network to a distribution that is transformed
  by a sequence of learnable bijections.
class_docstr_tok: ["Class","to","connect","a","network","to","a","distribution","that","is","transformed","by","a","sequence","of","learnable","bijections","."]
code: def __init__(
      self,
      base_distr_output: DistributionOutput,
      transforms_output: List[BijectionOutput],
  ) -> None:
      super().__init__()
      self.base_distr_output = base_distr_output
      self.transforms_output = transforms_output
  
      self.base_distr_args_dim = base_distr_output.args_dim
      self.transforms_args_dim = [
          transform.args_dim for transform in transforms_output
      ]
  
      def _fuse(t1: Tuple, t2: Tuple) -> Tuple:
          if len(t1) > len(t2):
              t1, t2 = t2, t1
          # from here on len(t2) >= len(t1)
          assert t2[-len(t1) :] == t1
          return t2
  
      self._event_shape: Tuple[int, ...] = ()
      for to in self.transforms_output:
          self._event_shape = _fuse(self._event_shape, to.event_shape)
  
file_path: gluonts/src/gluonts/mx/distribution/transformed_distribution_output.py
imports: from collections import ChainMap
  from typing import List, Optional, Tuple
  import numpy
  from mxnet import gluon
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from .None import Distribution
  from .bijection import AffineTransformation
  from .bijection_output import BijectionOutput
  from .distribution_output import ArgProj, DistributionOutput
  from .transformed_distribution import TransformedDistribution
label_desc: Use image node_id 1 to create a new TransformedDistributionOutput object from inherited base classes: DistributionOutput with example: obj = TransformedDistributionOutput(base_distr_output, transforms_output)