Transform

class paddle.distribution. Transform [source]

Base class for the transformations of random variables.

Transform can be used to represent any differentiable and injective function from the subset of Rn to subset of Rm, generally used for transforming a random sample generated by Distribution instance.

Suppose X is a K-dimensional random variable with probability density function pX(x). A new random variable Y=f(X) may be defined by transforming X with a suitably well-behaved function f. It suffices for what follows to note that if f is one-to-one and its inverse f1 have a well-defined Jacobian, then the density of Y is

pY(y)=pX(f1(y))|detJf1(y)|

where det is the matrix determinant operation and Jf1(y) is the Jacobian matrix of f1 evaluated at y. Taking x=f1(y), the Jacobian matrix is defined by

J(y)=[x1y1x1y2x1yKx2y1x2y2x2yKxKy1xKy2xKyK]

A Transform can be characterized by three operations:

  1. forward Forward implements xf(x), and is used to convert one random outcome into another.

  2. inverse Undoes the transformation yf1(y).

  3. log_det_jacobian The log of the absolute value of the determinant of the matrix of all first-order partial derivatives of the inverse function.

Subclass typically implement follow methods:

  • _forward

  • _inverse

  • _forward_log_det_jacobian

  • _inverse_log_det_jacobian (optional)

If the transform changes the shape of the input, you must also implemented:

  • _forward_shape

  • _inverse_shape

forward ( x: Tensor ) Tensor

forward

Forward transformation with mapping y=f(x).

Useful for turning one random outcome into another.

Parameters

x (Tensor) – Input parameter, generally is a sample generated from Distribution.

Returns

Outcome of forward transformation.

Return type

Tensor

inverse ( y: Tensor ) Tensor

inverse

Inverse transformation x=f1(y). It’s useful for “reversing” a transformation to compute one probability in terms of another.

Parameters

y (Tensor) – Input parameter for inverse transformation.

Returns

Outcome of inverse transform.

Return type

Tensor

forward_log_det_jacobian ( x: Tensor ) Tensor

forward_log_det_jacobian

The log of the absolute value of the determinant of the matrix of all first-order partial derivatives of the inverse function.

Parameters

x (Tensor) – Input tensor, generally is a sample generated from Distribution

Returns

The log of the absolute value of Jacobian determinant.

Return type

Tensor

inverse_log_det_jacobian ( y: Tensor ) Tensor

inverse_log_det_jacobian

Compute log|detJf1(y)|. Note that forward_log_det_jacobian is the negative of this function, evaluated at f1(y).

Parameters

y (Tensor) – The input to the inverse Jacobian determinant evaluation.

Returns

The value of log|detJf1(y)|.

Return type

Tensor

forward_shape ( shape: Sequence[int] ) Sequence[int]

forward_shape

Infer the shape of forward transformation.

Parameters

shape (Sequence[int]) – The input shape.

Returns

The output shape.

Return type

Sequence[int]

inverse_shape ( shape: Sequence[int] ) Sequence[int]

inverse_shape

Infer the shape of inverse transformation.

Parameters

shape (Sequence[int]) – The input shape of inverse transformation.

Returns

The output shape of inverse transformation.

Return type

Sequence[int]