cupy.random.multivariate_normal#

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

多元正态分布。

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

\[f(x) = \frac{1}{(2\pi|\Sigma|)^(n/2)} \exp\left(-\frac{1}{2} (x-\mu)^{\top}\Sigma^{-1}(x-\mu)\right).\]
参数:
  • mean (1-D array_like, of length N) – 多元正态分布的均值 \(\mu\)

  • cov (2-D array_like, of shape (N, N)) – 多元正态分布的协方差矩阵 \(\Sigma\)。为了正确采样,它必须是對稱且半正定的。

  • size (int or tuple of ints) – 数组的形状。如果为 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’,不同于 numpy 默认的 ‘svd’。在 CuPy 中,如果输入的协方差矩阵不是正定的,Cholesky 分解会静默失败并给出无效结果,而在 numpy 中,无效的协方差矩阵会引发异常。将 check_valid 设置为 ‘raise’ 将通过检查输入来复制 numpy 的行为,但也会强制设备同步。如果输入的有效性未知,将 method 设置为 ‘einh’ 或 ‘svd’ 并将 check_valid 设置为 ‘warn’,将使用 Cholesky 分解处理正定矩阵,并对其他矩阵(即非正半定矩阵)回退到指定的 method,如果分解可疑则会发出警告。

参见

numpy.random.multivariate_normal()