EXPERIMENTAL random variable container class around a distribution
Representation of a distribution interpreted as a random variable. Rather than directly manipulating a probability density by applying pointwise transformations to it, this allows for simple arithmetic transformations of the random variable the distribution represents. For more flexibility, consider using the transform method. Note that if you perform a non-invertible transform (like abs(X) or X**2), certain things might not work properly.
Can switch between RandomVariable and Distribution objects with the convenient Distribution.rv and RandomVariable.dist properties.
Supports either chaining operations or arithmetic operator overloading.
# This should be equivalent to an Exponential distribution. RandomVariable(Uniform(0, 1)).log().neg().dist # These two distributions Y1, Y2 should be the same X = Uniform(0, 1).rv Y1 = X.mul(4).pow(0.5).sub(1).abs().neg().dist Y2 = (-abs((4*X)**(0.5) - 1)).dist
Convenience property for exposing the distribution underlying the random variable.
Returns: The Distribution object underlying the random variable Return type: Distribution
Performs a transformation on the distribution underlying the RV.
Parameters: t (Transform) – The transformation (or sequence of transformations) to be applied to the distribution. There are many examples to be found in torch.distributions.transforms and pyro.distributions.transforms, or you can subclass directly from Transform. Returns: The transformed RandomVariable Return type: RandomVariable