Apply to speak at TensorFlow World. Deadline April 23rd. Propose talk

tfp.bijectors.ConditionalBijector

Class ConditionalBijector

Inherits From: Bijector

Conditional Bijector is a Bijector that allows intrinsic conditioning.

__init__

__init__(
    graph_parents=None,
    is_constant_jacobian=False,
    validate_args=False,
    dtype=None,
    forward_min_event_ndims=None,
    inverse_min_event_ndims=None,
    name=None
)

Constructs Bijector.

A Bijector transforms random variables into new random variables.

Examples:

# Create the Y = g(X) = X transform.
identity = Identity()

# Create the Y = g(X) = exp(X) transform.
exp = Exp()

See Bijector subclass docstring for more details and specific examples.

Args:

  • graph_parents: Python list of graph prerequisites of this Bijector.
  • is_constant_jacobian: Python bool indicating that the Jacobian matrix is not a function of the input.
  • validate_args: Python bool, default False. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
  • dtype: tf.dtype supported by this Bijector. None means dtype is not enforced.
  • forward_min_event_ndims: Python integer indicating the minimum number of dimensions forward operates on.
  • inverse_min_event_ndims: Python integer indicating the minimum number of dimensions inverse operates on. Will be set to forward_min_event_ndims by default, if no value is provided.
  • name: The name to give Ops created by the initializer.

Raises:

  • ValueError: If neither forward_min_event_ndims and inverse_min_event_ndims are specified, or if either of them is negative.
  • ValueError: If a member of graph_parents is not a Tensor.

Properties

dtype

dtype of Tensors transformable by this distribution.

forward_min_event_ndims

Returns the minimal number of dimensions bijector.forward operates on.

graph_parents

Returns this Bijector's graph_parents as a Python list.

inverse_min_event_ndims

Returns the minimal number of dimensions bijector.inverse operates on.

is_constant_jacobian

Returns true iff the Jacobian matrix is not a function of x.

Returns:

  • is_constant_jacobian: Python bool.

name

Returns the string name of this Bijector.

validate_args

Returns True if Tensor arguments will be validated.

Methods

__call__

__call__(
    value,
    name=None,
    **kwargs
)

Applies or composes the Bijector, depending on input type.

This is a convenience function which applies the Bijector instance in three different ways, depending on the input:

  1. If the input is a tfd.Distribution instance, return tfd.TransformedDistribution(distribution=input, bijector=self).
  2. If the input is a tfb.Bijector instance, return tfb.Chain([self, input]).
  3. Otherwise, return self.forward(input)

Args:

  • value: A tfd.Distribution, tfb.Bijector, or a Tensor.
  • name: Python str name given to ops created by this function.
  • **kwargs: Additional keyword arguments passed into the created tfd.TransformedDistribution, tfb.Bijector, or self.forward.

Returns:

  • composition: A tfd.TransformedDistribution if the input was a tfd.Distribution, a tfb.Chain if the input was a tfb.Bijector, or a Tensor computed by self.forward.

Examples

sigmoid = tfb.Reciprocal()(
    tfb.AffineScalar(shift=1.)(
      tfb.Exp()(
        tfb.AffineScalar(scale=-1.))))
# ==> `tfb.Chain([
#         tfb.Reciprocal(),
#         tfb.AffineScalar(shift=1.),
#         tfb.Exp(),
#         tfb.AffineScalar(scale=-1.),
#      ])`  # ie, `tfb.Sigmoid()`

log_normal = tfb.Exp()(tfd.Normal(0, 1))
# ==> `tfd.TransformedDistribution(tfd.Normal(0, 1), tfb.Exp())`

tfb.Exp()([-1., 0., 1.])
# ==> tf.exp([-1., 0., 1.])

forward

forward(
    *args,
    **kwargs
)
kwargs:
  • **condition_kwargs: Named arguments forwarded to subclass implementation.

forward_event_shape

forward_event_shape(input_shape)

Shape of a single sample from a single batch as a TensorShape.

Same meaning as forward_event_shape_tensor. May be only partially defined.

Args:

  • input_shape: TensorShape indicating event-portion shape passed into forward function.

Returns:

  • forward_event_shape_tensor: TensorShape indicating event-portion shape after applying forward. Possibly unknown.

forward_event_shape_tensor

forward_event_shape_tensor(
    input_shape,
    name='forward_event_shape_tensor'
)

Shape of a single sample from a single batch as an int32 1D Tensor.

Args:

  • input_shape: Tensor, int32 vector indicating event-portion shape passed into forward function.
  • name: name to give to the op

Returns:

  • forward_event_shape_tensor: Tensor, int32 vector indicating event-portion shape after applying forward.

forward_log_det_jacobian

forward_log_det_jacobian(
    *args,
    **kwargs
)
kwargs:
  • **condition_kwargs: Named arguments forwarded to subclass implementation.

inverse

inverse(
    *args,
    **kwargs
)
kwargs:
  • **condition_kwargs: Named arguments forwarded to subclass implementation.

inverse_event_shape

inverse_event_shape(output_shape)

Shape of a single sample from a single batch as a TensorShape.

Same meaning as inverse_event_shape_tensor. May be only partially defined.

Args:

  • output_shape: TensorShape indicating event-portion shape passed into inverse function.

Returns:

  • inverse_event_shape_tensor: TensorShape indicating event-portion shape after applying inverse. Possibly unknown.

inverse_event_shape_tensor

inverse_event_shape_tensor(
    output_shape,
    name='inverse_event_shape_tensor'
)

Shape of a single sample from a single batch as an int32 1D Tensor.

Args:

  • output_shape: Tensor, int32 vector indicating event-portion shape passed into inverse function.
  • name: name to give to the op

Returns:

  • inverse_event_shape_tensor: Tensor, int32 vector indicating event-portion shape after applying inverse.

inverse_log_det_jacobian

inverse_log_det_jacobian(
    *args,
    **kwargs
)
kwargs:
  • **condition_kwargs: Named arguments forwarded to subclass implementation.