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.inv_softplus(y)[source]#
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)