class_docstr: Conditional analogue of :class:`~pyro.distributions.torch_transform.ComposeTransformModule` .
  
  Useful as a base class for specifying complicated conditional distributions::
  
      >>> class ConditionalFlowStack(dist.conditional.ConditionalComposeTransformModule):
      ...     def __init__(self, input_dim, context_dim, hidden_dims, num_flows):
      ...         super().__init__([
      ...             dist.transforms.conditional_planar(input_dim, context_dim, hidden_dims)
      ...             for _ in range(num_flows)
      ...         ], cache_size=1)
  
      >>> cond_dist = dist.conditional.ConditionalTransformedDistribution(
      ...     dist.Normal(torch.zeros(3), torch.ones(3)).to_event(1),
      ...     [ConditionalFlowStack(3, 2, [8, 8], num_flows=4).inv]
      ... )
  
      >>> context = torch.rand(10, 2)
      >>> data = torch.rand(10, 3)
      >>> nll = -cond_dist.condition(context).log_prob(data)
code: def condition(self, context: torch.Tensor) -> ComposeTransformModule:
      return ComposeTransformModule(
          [t.condition(context) for t in self.transforms]
      ).with_cache(self._cache_size)
  
imports: from abc import ABC, abstractmethod
  import torch
  import torch.nn
  from .torch import TransformedDistribution
  from .torch_transform import ComposeTransformModule
label_desc: Use image node_id 2 for calling the ConditionalComposeTransformModule obj's underlying member method code with example usage: obj.condition(context) and returns: ComposeTransformModule