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: Applies `transform_fn` to `y` in parallel over nested bijectors.
docstr_tok: ["Applies","`","transform_fn","`","to","`","y","`","in","parallel","over","nested","bijectors","."]
code: def _walk_inverse(self, step_fn, ys, **kwargs):
      """Applies `transform_fn` to `y` in parallel over nested bijectors."""
      # Set check_types to False to support bij-structures wrapped by Trackable.
      return nest.map_structure_up_to(
          self._nested_structure,
          lambda bij, y: step_fn(
              bij, y, **kwargs.get(bij.name, {})
          ),  # pylint: disable=unnecessary-lambda
          self._bijectors,
          ys,
          check_types=False,
      )
  
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 3 for calling the _JointMap obj's underlying member method code with example usage: obj._walk_inverse(step_fn, ys) and returns: nest