gluonts.mx.distribution.lowrank_multivariate_gaussian 模块#
- class gluonts.mx.distribution.lowrank_multivariate_gaussian.LowrankMultivariateGaussian(dim: int, rank: int, mu: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], D: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], W: Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]] = None)[source]#
基类:
gluonts.mx.distribution.distribution.Distribution
多元高斯分布,其协方差矩阵参数化为对角矩阵和一个低秩矩阵之和。
\[\Sigma = D + W W^T\]当 W = None 时,协方差矩阵是对角矩阵。
该实现深受 Pytorch 的启发: https://github.com/pytorch/pytorch/blob/master/torch/distributions/lowrank_multivariate_normal.py。
计算 log_prob 的复杂度为每个元素 \(O(dim * rank + rank^3)\)。
- 参数
dim – 分布支持的维度
rank – W 的秩
mu – 均值张量,形状为 (…, dim)
D – 协方差矩阵中的对角项,形状为 (…, dim)
W – 协方差矩阵中的低秩因子,形状为 (…, dim, rank) 可选;如果未提供,协方差矩阵仅为对角矩阵。
- property F#
- arg_names: Tuple#
- property batch_shape: Tuple#
分布所考虑的事件集合的布局。
调用分布的 sample() 方法会生成一个形状为 batch_shape + event_shape 的张量,对该样本计算 log_prob(或更一般地,loss)会生成一个形状为 batch_shape 的张量。
此属性通常仅在 mx.ndarray 模式下可用,此时可以访问分布参数的形状。
- property event_dim: int#
事件维度的数量,即 event_shape 元组的长度。
对于标量分布,此值为 0;对于向量分布,此值为 1;对于矩阵分布,此值为 2;以此类推。
- property event_shape: Tuple#
分布所考虑的每个独立事件的形状。
例如,标量分布的 event_shape = (),向量分布的 event_shape = (d, ),其中 d 是向量的长度,矩阵分布的 event_shape = (d1, d2),以此类推。
调用分布的 sample() 方法会生成一个形状为 batch_shape + event_shape 的张量。
此属性通常仅在 mx.ndarray 模式下可用,此时可以访问分布参数的形状。
- classmethod fit(F, samples: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], rank: int = 0) gluonts.mx.distribution.distribution.Distribution [source]#
通过对给定数据拟合参数,返回一个 LowrankMultivariateGaussian 实例。目前仅支持 rank = 0 的特殊情况。
- 参数
F –
samples – 形状为 (num_samples, batch_size, seq_len, target_dim) 的张量
rank – W 的秩
- 返回类型
LowrankMultivariateGaussian 类型的分布实例。
- is_reparameterizable = True#
- log_prob(x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol] [source]#
计算分布在 x 处的对数密度。
- 参数
x – 形状为 (*batch_shape, *event_shape) 的张量。
- 返回
形状为 batch_shape 的张量,其中包含 x 中每个事件的分布对数密度。
- 返回类型
张量
- property mean: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]#
包含分布均值的张量。
- sample_rep(num_samples: typing.Optional[int] = None, dtype=<class 'numpy.float32'>) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol] [source]#
从多元高斯分布中抽取样本
\[s = \mu + D u + W v,\]其中 \(u\) 和 \(v\) 是标准正态样本。
- 参数
num_samples – 要抽取的样本数量。
dtype – 样本的数据类型。
- 返回类型
形状为 (num_samples, …, dim) 的张量
- property variance: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]#
包含分布方差的张量。
- class gluonts.mx.distribution.lowrank_multivariate_gaussian.LowrankMultivariateGaussianOutput(dim: int, rank: int, sigma_init: float = 1.0, sigma_minimum: float = 0.001)[source]#
基类:
gluonts.mx.distribution.distribution_output.DistributionOutput
- args_dim: Dict[str, int]#
- distr_cls: type#
- distribution(distr_args, loc=None, scale=None, **kwargs) gluonts.mx.distribution.distribution.Distribution [source]#
构建关联的分布,给定构造函数参数集合以及可选的尺度张量。
- 参数
distr_args – 底层 Distribution 类型的构造函数参数。
loc – 可选张量,与结果分布的 batch_shape+event_shape 具有相同的形状。
scale – 可选张量,与结果分布的 batch_shape+event_shape 具有相同的形状。
- domain_map(F, mu_vector, D_vector, W_vector=None)[source]#
- 参数
F –
mu_vector – 形状为 (…, dim) 的张量
D_vector – 形状为 (…, dim) 的张量
W_vector – 形状为 (…, dim * rank ) 的张量
- 返回
一个包含张量 mu, D 和 W 的元组,它们的形状分别为 (…, dim), (…, dim) 和 (…, dim, rank)。
- 返回类型
元组
- property event_shape: Tuple#
此对象构建的分布所考虑的每个独立事件的形状。
- get_args_proj(prefix: Optional[str] = None) gluonts.mx.distribution.distribution_output.ArgProj [source]#
- gluonts.mx.distribution.lowrank_multivariate_gaussian.capacitance_tril(F, rank: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], W: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], D: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol] [source]#
- 参数
F –
rank –
W ((..., dim, rank)) –
D ((..., dim)) –
- 返回类型
电容矩阵 \(I + W^T D^{-1} W\)
- gluonts.mx.distribution.lowrank_multivariate_gaussian.log_det(F, batch_D: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], batch_capacitance_tril: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol] [source]#
使用矩阵行列式引理。
\[\log|D + W W^T| = \log|C| + \log|D|,\]其中 \(C\) 是电容矩阵 \(I + W^T D^{-1} W\),用于计算对数行列式。
- 参数
F –
batch_D –
batch_capacitance_tril –
- gluonts.mx.distribution.lowrank_multivariate_gaussian.lowrank_log_likelihood(rank: int, mu: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], D: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], W: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol] [source]#
- gluonts.mx.distribution.lowrank_multivariate_gaussian.mahalanobis_distance(F, W: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], D: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], capacitance_tril: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol] [source]#
使用 Woodbury 矩阵恒等式。
\[(W W^T + D)^{-1} = D^{-1} - D^{-1} W C^{-1} W^T D^{-1},\]其中 \(C\) 是电容矩阵 \(I + W^T D^{-1} W\),用于计算平方马氏距离 \(x^T (W W^T + D)^{-1} x\)。
- 参数
F –
W – (…, dim, rank)
D – (…, dim)
capacitance_tril – (…, rank, rank)
x – (…, dim)