MultivariateNormal¶
- class paddle.distribution. MultivariateNormal ( loc, covariance_matrix=None, precision_matrix=None, scale_tril=None ) ¶
MultivariateNormal 是一种定义在实数域上的多元连续型概率分布,参数 loc
表示均值,以及需要传入以下任意一种矩阵描述其方差: covariance_matrix
、 precision_matrix
、 scale_tril
。
其概率密度函数(pdf)为:
其中:
\(X\) 是 k 维随机向量。
\(\mu\) 是 k 维均值向量。
\(\Sigma\) 是 k 阶协方差矩阵。
参数¶
loc (int|float|Tensor) - 即上述公式中 \(\mu\) 参数,是 MultivariateNormal 的均值向量。如果
loc
的输入数据类型是 int 或 float 则会被转换为数据类型为 paddle 全局默认数据类型的 1-D Tensor。covariance_matrix (Tensor,可选) - 即上述公式中 \(\mu\) 参数,是 MultivariateNormal 的协方差矩阵。
covariance_matrix
的数据类型会被转换为与loc
相同的类型。默认值为 None。precision_matrix (Tensor,可选) - 是 MultivariateNormal 协方差矩阵的逆矩阵。
precision_matrix
的数据类型会被转换为与loc
相同的类型。默认值为 None。scale_tril (Tensor,可选) - 是 MultivariateNormal 协方差矩阵的柯列斯基分解的下三角矩阵。
scale_tril
的数据类型会被转换为与loc
相同的类型。默认值为 None。
代码示例¶
COPY-FROM: paddle.distribution.MultivariateNormal
方法¶
sample(shape=())¶
从 MultivariateNormal 分布中生成满足特定形状的样本数据。最终生成样本形状为 sample_shape + batch_shape + event_shape
。
参数
shape (Sequence[int],可选):采样次数。
返回
Tensor,样本数据。其维度为 \(\text{sample shape} + \text{batch shape} + \text{event shape}\) 。数据类型与 self.loc 相同。
rsample(shape=())¶
重参数化采样,生成指定维度的样本。最终生成样本形状为 sample_shape + batch_shape + event_shape
。
参数
shape (Sequence[int],可选):采样次数。
返回
Tensor,样本数据。其维度为 \(\text{sample shape} + \text{batch shape} + \text{event shape}\) 。数据类型与 self.loc 相同。
entropy()¶
计算 MultivariateNormal 分布的信息熵。
返回
多元正态分布的信息熵,数据类型与 self.loc 相同。
kl_divergence(other)¶
相对于另一个多元正态分布的 KL 散度,两个分布需要有相同的 \(\text{batch shape}\) 和 \(\text{event shape}\)。
参数
other (MultivariateNormal) - 输入的另一个多元正态分布。
返回
相对于另一个多元正态分布的 KL 散度,数据类型与 self.loc 相同。