torch.distributions.TransformedDistribution
class TransformedDistribution extends Distributionnew TransformedDistribution(base_distribution: Distribution, transforms: Transform[], options?: DistributionOptions)
- readonly
base_dist(Distribution) - – The base distribution.
- readonly
transforms(Transform[]) - – List of transforms applied to the base distribution.
- readonly
arg_constraints(Record<string, Constraint>) - readonly
support(Constraint) - readonly
has_rsample(boolean) - readonly
mean(Tensor) - readonly
mode(Tensor) - readonly
variance(Tensor)
TransformedDistribution: applies a sequence of transforms to a base distribution.
Extension of Distribution that applies a sequence of transforms to a base distribution. Essential for:
- Creating complex distributions from simple ones (LogNormal from Normal)
- Normalizing flows and invertible transformations
- Change of variables in probabilistic models
- Reparameterized sampling through transformations
- Building flexible variational families
TransformedDistribution(base_dist, [t1, t2, t3]) is equivalent to: Y = t3(t2(t1(X))) where X ~ base_dist.
\begin{aligned} Y = T_k \circ \cdots \circ T_1(X) \quad X \sim p_{\text{base}} \\ p_Y(y) = p_X(T^{-1}(y)) \left|\det \frac{dT^{-1}(y)}{dy}\right| \\ \text{log_prob: } \log p_Y(y) = \log p_X(T^{-1}(y)) + \sum_i \log\left|\det \frac{dT_i^{-1}}{dy_i}\right| \\ \text{Jacobian}: \left|\det \frac{dT}{dx}\right| \text{ (product for composed transforms)} \end{aligned}Examples
// LogNormal is a transformed Normal
const log_normal = new TransformedDistribution(
new Normal(0, 1),
[new ExpTransform()]
);