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\)。为了正确采样,它必须是對稱且半正定的。
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.float32和numpy.float64类型。
- 返回:
从多元正态分布中抽取的样本。
- 返回类型:
备注
默认的 method 设置为最快的方法 ‘cholesky’,不同于 numpy 默认的 ‘svd’。在 CuPy 中,如果输入的协方差矩阵不是正定的,Cholesky 分解会静默失败并给出无效结果,而在 numpy 中,无效的协方差矩阵会引发异常。将 check_valid 设置为 ‘raise’ 将通过检查输入来复制 numpy 的行为,但也会强制设备同步。如果输入的有效性未知,将 method 设置为 ‘einh’ 或 ‘svd’ 并将 check_valid 设置为 ‘warn’,将使用 Cholesky 分解处理正定矩阵,并对其他矩阵(即非正半定矩阵)回退到指定的 method,如果分解可疑则会发出警告。
参见
numpy.random.multivariate_normal()