cupy.random.multivariate_normal#

cupy.random.multivariate_normal(mean, cov, size=None, check_valid='ignore', tol=1e-08, method='cholesky', dtype=<class 'float'>)[source]#

多元正态分布。

返回从多元正态分布中抽取的样本数组。其概率密度函数定义为

\[f(x) = \frac{1}{(2\pi|\Sigma|)^(n/2)} \exp\left(-\frac{1}{2} (x-\mu)^{\top}\Sigma^{-1}(x-\mu)\right).\]
参数:
  • mean (一维数组类对象, 长度为 N) – 多元正态分布的均值 \(\mu\)

  • cov (二维数组类对象, 形状为 (N, N)) – 多元正态分布的协方差矩阵 \(\Sigma\)。它必须是对称的且半正定才能正确采样。

  • size (intints 的元组) – 数组的形状。如果为 None,则生成零维数组。

  • check_valid ('warn', 'raise', 'ignore') – 当协方差矩阵不是半正定时,行为。

  • tol (float) – 检查协方差矩阵中奇异值时的容差。

  • method – { ‘cholesky’, ‘eigh’, ‘svd’},可选。cov 输入用于计算因子矩阵 A,使得 A @ A.T = cov。此参数用于选择计算因子矩阵 A 的方法。默认方法 ‘cholesky’ 最快,而 ‘svd’ 最慢但比最快的方法更鲁棒。方法 eigh 使用特征分解计算 A,比 svd 快但比 cholesky 慢。

  • dtype – 数据类型说明符。仅允许 numpy.float32numpy.float64 类型。

返回:

从多元正态分布中抽取的样本。

返回类型:

cupy.ndarray

注意

默认的 method 设置为最快的 ‘cholesky’,这与默认设置为 ‘svd’ 的 numpy 不同。如果输入协方差矩阵不是正定矩阵,CuPy 中的 Cholesky 分解会静默失败并给出无效结果,这与 numpy 不同,numpy 中无效的协方差矩阵会引发异常。将 check_valid 设置为 ‘raise’ 会通过检查输入来复现 numpy 的行为,但也会强制设备同步。如果输入的有效性未知,将 method 设置为 ‘eigh’ 或 ‘svd’,并将 check_valid 设置为 ‘warn’,对于正定矩阵将使用 Cholesky 分解,对于其他矩阵(即非半正定)将回退到指定的 method,并且如果分解可疑将发出警告。