随机变量

随机变量

class RandomVariable(distribution)[source]

基础类:pyro.contrib.randomvariable.random_variable.RVMagicOps, pyro.contrib.randomvariable.random_variable.RVChainOps

实验性的随机变量容器类,围绕一个分布

表示一个被解释为随机变量的分布。这允许对分布所代表的随机变量进行简单的算术变换,而不是通过对概率密度应用逐点变换来直接操作它。为了获得更大的灵活性,考虑使用transform方法。请注意,如果您执行不可逆的变换(如abs(X)X**2),某些功能可能无法正常工作。

可以在RandomVariableDistribution对象之间切换,使用方便的Distribution.rvRandomVariable.dist属性。

支持链式操作或算术运算符重载。

示例用法:

# 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
property dist

方便属性,用于暴露随机变量的基础分布。

Returns

随机变量基础的Distribution对象

Return type

Distribution

transform(t: torch.distributions.transforms.Transform)[source]

对随机变量(RV)的基础分布执行转换。

Parameters

t (Transform) – 要应用于分布的变换(或变换序列)。在torch.distributions.transformspyro.distributions.transforms中可以找到许多示例,或者你可以直接从Transform子类化。

Returns

转换后的 RandomVariable

Return type

RandomVariable