tfp.experimental.tangent_spaces.TangentSpace

Represents a tangent space to some manifold M at a point x.

TFP allows one to transform manifolds via Bijectors. Keeping track of the tangent space to a manifold allows us to calculate the correct push-forward density under such transformations.

In general, the density correction involves computing the basis of the tangent space as well as the image of that basis under the transformation. But we can avoid this work in special cases that arise from the properties of the transformation f (e.g., dimension-preserving, coordinate-wise) and the density p of the manifold (e.g., discrete, supported on all of R^n).

Each subclass of TangentSpace represents a specific property of densities seen in the uses of TFP. The methods of TangentSpace represent the special Bijector structures provided by TFP. Each subclass thus defines how to compute the density correction under each kind of transformation.

Methods

transform_coordinatewise

View source

Same as transform_dimension_preserving, for a coordinatewise f.

Default falls back to transform_dimension_preserving, which may be overridden in subclasses.

Args
x same as in transform_dimension_preserving.
f same as in transform_dimension_preserving.
**kwargs same as in transform_dimension_preserving.

Returns
log_density A Tensor representing the log density correction of f at x
space A TangentSpace representing the tangent to fM at f(x)

Raises
NotImplementedError if the TangentSpace subclass does not implement transform_dimension_preserving.

transform_dimension_preserving

View source

Same as transform_general, assuming f goes from R^n to R^n.

Default falls back to transform_general, which may be overridden in subclasses.

Args
x same as in transform_general.
f same as in transform_general.
**kwargs same as in transform_general.

Returns
log_density A Tensor representing the log density correction of f at x
space A TangentSpace representing the tangent to fM at f(x)

Raises
NotImplementedError if the TangentSpace subclass does not implement transform_general.

transform_general

View source

Returns the density correction, in log space, corresponding to f at x.

Also returns a new TangentSpace representing the tangent to fM at f(x).

Args
x Tensor (structure). The point at which to calculate the density.
f Bijector or one of its subclasses. The transformation that requires a density correction based on this tangent space.
**kwargs Optional keyword arguments as part of the Bijector.

Returns
log_density A Tensor representing the log density correction of f at x
space A TangentSpace representing the tangent to fM at f(x)

Raises
NotImplementedError if the TangentSpace subclass does not implement this method.

transform_projection

View source

Same as transform_general, with f a projection (or its inverse).

Default falls back to transform_general, which may be overridden in subclasses.

Args
x same as in transform_general.
f same as in transform_general.
**kwargs same as in transform_general.

Returns
log_density A Tensor representing the log density correction of f at x
space A TangentSpace representing the tangent to fM at f(x)

Raises
NotImplementedError if the TangentSpace subclass does not implement transform_general.