class_docstr: LambertWTail transformation for heavy-tail Lambert W x F random variables.
  
  A random variable Y has a Lambert W x F distribution if W_tau(Y) = X has
  distribution F, where tau = (shift, scale, tail) parameterizes the inverse
  transformation.
  
  This bijector defines the transformation underlying Lambert W x F
  distributions that transform an input random variable to an output
  random variable with heavier tails. It is defined as
  
    Y = (U * exp(0.5 * tail * U^2)) * scale + shift,  tail >= 0
  
  where U = (X - shift) / scale is a shifted/scaled input random variable, and
  tail >= 0 is the tail parameter.
  
  Attributes:
    shift: shift to center (uncenter) the input data.
    scale: scale to normalize (de-normalize) the input data.
    tailweight: Tail parameter `delta` of heavy-tail transformation; must be
      >= 0.
class_docstr_tok: ["LambertWTail","transformation","for","heavy-tail","Lambert","W","x","F","random","variables",".","A","random","variable","Y","has","a","Lambert","W","x","F","distribution","if","W_tau","(","Y",")","=","X","has","distribution","F",",","where","tau","=","(","shift",",","scale",",","tail",")","parameterizes","the","inverse","transformation",".","This","bijector","defines","the","transformation","underlying","Lambert","W","x","F","distributions","that","transform","an","input","random","variable","to","an","output","random","variable","with","heavier","tails",".","It","is","defined","as","Y","=","(","U","*","exp","(","0.5","*","tail","*","U^2",")",")","*","scale","+","shift",",","tail",">","=","0","where","U","=","(","X","-","shift",")","\/","scale","is","a","shifted\/scaled","input","random","variable",",","and","tail",">","=","0","is","the","tail","parameter",".","Attributes",":","shift",":","shift","to","center","(","uncenter",")","the","input","data",".","scale",":","scale","to","normalize","(","de-normalize",")","the","input","data",".","tailweight",":","Tail","parameter","`","delta","`","of","heavy-tail","transformation",";","must","be",">","=","0","."]
docstr: Construct a location scale heavy-tail Lambert W bijector.
  
  The parameters `shift`, `scale`, and `tail` must be shaped in a way that
  supports broadcasting (e.g. `shift + scale + tail` is a valid operation).
  
  Args:
    shift: Floating point tensor; the shift for centering (uncentering) the
      input (output) random variable(s).
    scale: Floating point tensor; the scaling (unscaling) of the input
      (output) random variable(s). Must contain only positive values.
    tailweight: Floating point tensor; the tail behaviors of the output random
      variable(s).  Must contain only non-negative values.
    validate_args: Python `bool`, default `False`. When `True` distribution
      parameters are checked for validity despite possibly degrading runtime
      performance. When `False` invalid inputs may silently render incorrect
      outputs.
    name: Python `str` name prefixed to Ops created by this class.
  
  Raises:
    TypeError: if `shift` and `scale` and `tail` have different `dtype`.
docstr_tok: ["Construct","a","location","scale","heavy-tail","Lambert","W","bijector",".","The","parameters","`","shift","`",",","`","scale","`",",","and","`","tail","`","must","be","shaped","in","a","way","that","supports","broadcasting","(","e.g",".","`","shift","+","scale","+","tail","`","is","a","valid","operation",")",".","Args",":","shift",":","Floating","point","tensor",";","the","shift","for","centering","(","uncentering",")","the","input","(","output",")","random","variable","(","s",")",".","scale",":","Floating","point","tensor",";","the","scaling","(","unscaling",")","of","the","input","(","output",")","random","variable","(","s",")",".","Must","contain","only","positive","values",".","tailweight",":","Floating","point","tensor",";","the","tail","behaviors","of","the","output","random","variable","(","s",")",".","Must","contain","only","non-negative","values",".","validate_args",":","Python","`","bool","`",",","default","`","False","`",".","When","`","True","`","distribution","parameters","are","checked","for","validity","despite","possibly","degrading","runtime","performance",".","When","`","False","`","invalid","inputs","may","silently","render","incorrect","outputs",".","name",":","Python","`","str","`","name","prefixed","to","Ops","created","by","this","class",".","Raises",":","TypeError",":","if","`","shift","`","and","`","scale","`","and","`","tail","`","have","different","`","dtype","`","."]
code: def __init__(
      self,
      shift,
      scale,
      tailweight,
      validate_args=False,
      name="lambertw_tail",
  ):
      """Construct a location scale heavy-tail Lambert W bijector.
  
      The parameters `shift`, `scale`, and `tail` must be shaped in a way that
      supports broadcasting (e.g. `shift + scale + tail` is a valid operation).
  
      Args:
        shift: Floating point tensor; the shift for centering (uncentering) the
          input (output) random variable(s).
        scale: Floating point tensor; the scaling (unscaling) of the input
          (output) random variable(s). Must contain only positive values.
        tailweight: Floating point tensor; the tail behaviors of the output random
          variable(s).  Must contain only non-negative values.
        validate_args: Python `bool`, default `False`. When `True` distribution
          parameters are checked for validity despite possibly degrading runtime
          performance. When `False` invalid inputs may silently render incorrect
          outputs.
        name: Python `str` name prefixed to Ops created by this class.
  
      Raises:
        TypeError: if `shift` and `scale` and `tail` have different `dtype`.
      """
      with tf.name_scope(name) as name:
          dtype = dtype_util.common_dtype(
              [tailweight, shift, scale], tf.float32
          )
          self._tailweight = tensor_util.convert_nonref_to_tensor(
              tailweight, name="tailweight", dtype=dtype
          )
          self._shift = tensor_util.convert_nonref_to_tensor(
              shift, name="shift", dtype=dtype
          )
          self._scale = tensor_util.convert_nonref_to_tensor(
              scale, name="scale", dtype=dtype
          )
          dtype_util.assert_same_float_dtype(
              (self._tailweight, self._shift, self._scale)
          )
  
          self._shift_and_scale = chain.Chain(
              [
                  tfb_shift.Shift(self._shift),
                  tfb_scale.Scale(self._scale),
              ]
          )
          # 'bijectors' argument in tfb.Chain super class are executed in reverse(!)
          # order.  Hence the ordering in the list must be (3,2,1), not (1,2,3).
          super(LambertWTail, self).__init__(
              bijectors=[
                  self._shift_and_scale,
                  _HeavyTailOnly(tailweight=self._tailweight),
                  invert.Invert(self._shift_and_scale),
              ],
              validate_args=validate_args,
          )
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector
  from tensorflow_probability.python.bijectors import chain
  from tensorflow_probability.python.bijectors import invert
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.bijectors import shift
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.math import special
label_desc: Use image node_id 1 to create a new LambertWTail object from inherited base classes: bijector, chain with example: obj = LambertWTail(shift, scale, tailweight, validate_args, name)