class_docstr: Bijector which inverts another Bijector.
  
  Example Use: [ExpGammaDistribution (see Background & Context)](
  https://reference.wolfram.com/language/ref/ExpGammaDistribution.html)
  models `Y=log(X)` where `X ~ Gamma`.
  
  ```python
  exp_gamma_distribution = TransformedDistribution(
    distribution=Gamma(concentration=1., rate=2.),
    bijector=bijector.Invert(bijector.Exp())
  ```
class_docstr_tok: ["Bijector","which","inverts","another","Bijector",".","Example","Use",":","[","ExpGammaDistribution","(","see","Background","&","Context",")","]","(","https",":","\/\/reference.wolfram.com\/language\/ref\/ExpGammaDistribution.html",")","models","`","Y=log","(","X",")","`","where","`","X","~","Gamma","`",".","``","`","python","exp_gamma_distribution","=","TransformedDistribution","(","distribution=Gamma","(","concentration=1.",",","rate=2",".",")",",","bijector=bijector.Invert","(","bijector.Exp","(",")",")","``","`"]
docstr: Creates a `Bijector` which swaps the meaning of `inverse` and `forward`.
  
  Note: An inverted bijector's `inverse_log_det_jacobian` is often more
  efficient if the base bijector implements `_forward_log_det_jacobian`. If
  `_forward_log_det_jacobian` is not implemented then the following code is
  used:
  
  ```python
  y = self.inverse(x, **kwargs)
  return -self.inverse_log_det_jacobian(y, **kwargs)
  ```
  
  Args:
    bijector: Bijector instance.
    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.
docstr_tok: ["Creates","a","`","Bijector","`","which","swaps","the","meaning","of","`","inverse","`","and","`","forward","`",".","Note",":","An","inverted","bijector","'s","`","inverse_log_det_jacobian","`","is","often","more","efficient","if","the","base","bijector","implements","`","_forward_log_det_jacobian","`",".","If","`","_forward_log_det_jacobian","`","is","not","implemented","then","the","following","code","is","used",":","``","`","python","y","=","self.inverse","(","x",",","*","*","kwargs",")","return","-self.inverse_log_det_jacobian","(","y",",","*","*","kwargs",")","``","`","Args",":","bijector",":","Bijector","instance",".","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","."]
code: def __init__(
      self, bijector, validate_args=False, parameters=None, name=None
  ):
      """Creates a `Bijector` which swaps the meaning of `inverse` and `forward`.
  
      Note: An inverted bijector's `inverse_log_det_jacobian` is often more
      efficient if the base bijector implements `_forward_log_det_jacobian`. If
      `_forward_log_det_jacobian` is not implemented then the following code is
      used:
  
      ```python
      y = self.inverse(x, **kwargs)
      return -self.inverse_log_det_jacobian(y, **kwargs)
      ```
  
      Args:
        bijector: Bijector instance.
        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.
      """
  
      parameters = dict(locals()) if parameters is None else parameters
      if not bijector._is_injective:  # pylint: disable=protected-access
          raise NotImplementedError(
              "Invert is not implemented for non-injective bijectors."
          )
  
      name = name or "_".join(["invert", bijector.name])
      with tf.name_scope(name) as name:
          self._bijector = bijector
          super(_Invert, self).__init__(
              forward_min_event_ndims=bijector.inverse_min_event_ndims,
              inverse_min_event_ndims=bijector.forward_min_event_ndims,
              dtype=bijector.dtype,
              is_constant_jacobian=bijector.is_constant_jacobian,
              validate_args=validate_args,
              parameters=parameters,
              name=name,
          )
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector
  from tensorflow_probability.python.internal import auto_composite_tensor
  from tensorflow_probability.python.internal import parameter_properties
label_desc: Use image node_id 1 to create a new _Invert object from inherited base classes: bijector_lib with example: obj = _Invert(bijector, validate_args, parameters, name)