class_docstr: Bijector which applies a structure of bijectors in parallel.
  
  This is the "structured" counterpart to `Chain`. Whereas `Chain` applies an
  ordered sequence, JointMap applies a structure of transformations to a
  matching structure of inputs.
  
  Example Use:
  
  ```python
  exp = Exp()
  scale = Scale(2.)
  parallel = JointMap({'a': exp, 'b': scale})
  x = {'a': 1., 'b': 2.}
  
  parallel.forward(x)
  # = {'a': exp.forward(x['a']), 'b': scale.forward(x['b'])}
  # = {'a': tf.exp(1.), 'b': 2. * 2.}
  
  parallel.inverse(x)
  # = {'a': exp.inverse(x['a']), 'b': scale.inverse(x['b'])}
  # = {'a': tf.log(1.), 'b': 2. / 2.}
  ```
  
  Bijectors need not be a dictionary; it could be a list, tuple, list of
  dictionaries, or anything else supported by `tf.nest.map_structure`.
docstr: Instantiates `JointMap` bijector.
  
  Args:
    bijectors: Structure of bijector instances to apply in parallel.
    validate_args: Python `bool` indicating whether arguments should be
      checked for correctness.
    parameters: Locals dict captured by subclass constructor, to be used for
      copy/slice re-instantiation operators.
    name: Python `str`, name given to ops managed by this object.
      Default value: automatically constructed, e.g.,
        `jointmap_of_exp_and_softplus`.
  
  Raises:
    ValueError: if bijectors have different dtypes.
docstr_tok: ["Instantiates","`","JointMap","`","bijector",".","Args",":","bijectors",":","Structure","of","bijector","instances","to","apply","in","parallel",".","validate_args",":","Python","`","bool","`","indicating","whether","arguments","should","be","checked","for","correctness",".","parameters",":","Locals","dict","captured","by","subclass","constructor",",","to","be","used","for","copy\/slice","re-instantiation","operators",".","name",":","Python","`","str","`",",","name","given","to","ops","managed","by","this","object",".","Default","value",":","automatically","constructed",",","e.g.",",","`","jointmap_of_exp_and_softplus","`",".","Raises",":","ValueError",":","if","bijectors","have","different","dtypes","."]
code: def __init__(
      self,
      bijectors=None,
      validate_args=False,
      parameters=None,
      name=None,
  ):
      """Instantiates `JointMap` bijector.
  
      Args:
        bijectors: Structure of bijector instances to apply in parallel.
        validate_args: Python `bool` indicating whether arguments should be
          checked for correctness.
        parameters: Locals dict captured by subclass constructor, to be used for
          copy/slice re-instantiation operators.
        name: Python `str`, name given to ops managed by this object.
          Default value: automatically constructed, e.g.,
            `jointmap_of_exp_and_softplus`.
  
      Raises:
        ValueError: if bijectors have different dtypes.
      """
      parameters = dict(locals()) if parameters is None else parameters
  
      if not bijectors:
          raise ValueError("`bijectors` must not be empty.")
  
      if name is None:
          name = "jointmap_of_" + "_and_".join(
              [b.name for b in nest.flatten(bijectors)]
          )
          name = name.replace("/", "")
      with tf.name_scope(name) as name:
          # Structured dtypes are based on the non-wrapped input.
          # Keep track of the non-wrapped structure of bijectors to correctly
          # wrap inputs/outputs in _walk methods.
          self._nested_structure = self._no_dependency(
              nest.map_structure(lambda b: None, bijectors)
          )
  
          super(_JointMap, self).__init__(
              bijectors=bijectors,
              validate_args=validate_args,
              forward_min_event_ndims=self._nested_structure,
              inverse_min_event_ndims=self._nested_structure,
              parameters=parameters,
              name=name,
          )
  
file_path: probability/tensorflow_probability/python/bijectors/joint_map.py
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector
  from tensorflow_probability.python.bijectors import composition
  from tensorflow_probability.python.internal import auto_composite_tensor
  from tensorflow.python.util import nest
label_desc: Use image node_id 1 to create a new _JointMap object from inherited base classes: composition with example: obj = _JointMap(bijectors, validate_args, parameters, name)