class

PowerTransform

extendsTransform
PowerTransform(exponent: Tensor | float)
source

Element-wise power bijection y=xexponenty = x^{\mathrm{exponent}}.

Bijection on (0,)(0,)(0, \infty) \to (0, \infty) (the input must be positive; the implementation does not check this). Useful for Box–Cox-style reparameterisations and for mapping between Gamma families with different shape parameters.

Parameters

exponentTensor or float
Power pp applied element-wise. Sign-aware: negative exponents are admissible but flip orientation, and zero exponents are not invertible (excluded).

Notes

Forward: y=xpy = x^{p}.

Inverse: x=y1/px = y^{1/p}.

Log Jacobian determinant:

log ⁣yx=logp+(p1)logx\log\!\left|\frac{\partial y}{\partial x}\right| = \log|p| + (p - 1)\log x

Special cases:

  • p=1p = 1 → identity.
  • p=1p = -1 → reciprocal y=1/xy = 1/x.
  • p=2p = 2 → squaring on the positive half-line.

Examples

>>> import lucid
>>> from lucid.distributions.transforms import PowerTransform
>>> T = PowerTransform(exponent=2.0)
>>> T(lucid.tensor(3.0))  # 3² = 9
Tensor(9.0)

Methods (2)

dunder

__init__

None
__init__(exponent: Tensor | float)
source

Store the (element-wise) power exponent.

fn

log_abs_det_jacobian

Tensor
log_abs_det_jacobian(x: Tensor, y: Tensor)
source

logy/x=logexponent+(exponent1)logx\log|\partial y/\partial x| = \log|\text{exponent}| + (\text{exponent} - 1)\log x.