mindspore.scipy.linalg.cho_factor

mindspore.scipy.linalg.cho_factor(a, lower=False, overwrite_a=False, check_finite=True)[源代码]

计算矩阵的cholesky分解,用于 mindspore.scipy.linalg.cho_solve()

返回包含cholesky分解的矩阵,对于一个Hermitian正定矩阵 A,根据 lower 取值,进行如下形式的分解:

  • lower 为True: \(A = L L^*\)

  • lower 为False: \(A = U^* U\)

其中, \(L^*\)\(L\) 的共轭转置矩阵。 其中, \(U^*\)\(U\) 的共轭转置矩阵。

返回值可以直接作为 mindspore.scipy.linalg.cho_solve() 的第一个参数使用。

说明

  • Windows平台上还不支持 cho_factor

  • 仅支持float32、float64、int32、int64类型的Tensor类型。

  • 如果Tensor是int32、int64类型,它将被强制转换为:mstype.float64类型。

警告

返回的矩阵中还包含cholesky分解不使用的条目中的随机数据。如果需要将这些条目清零,请改用 mindspore.scipy.linalg.cholesky() 函数。

参数:
  • a (Tensor) - 要分解的 \((M,M)\) 方阵。

  • lower (bool, 可选) - 是计算上三角还是下三角的cholesky分解。 默认值:False

  • overwrite_a (bool, 可选) - 是否覆盖参数 a 中的数据(可能会提高性能)。 默认值:False。 在MindSpore中,这个参数当前不起作用。

  • check_finite (bool, 可选) - 是否检查输入矩阵是否只包含有限数。 禁用可能会带来性能增益,但如果输入确实包含INF或NaN,则可能会导致问题(崩溃、程序不终止)。 默认值:True。 在MindSpore中,当前这个参数不起作用。

返回:
  • c (Tensor) - 在上三角或下三角中包含 a 的cholesky因子的矩阵。 矩阵的其他部分包含随机数据。

  • lower (bool) - 表示cholesky因子是在下三角形还是上三角形。

异常:
  • ValueError - 如果输入的Tensor不是2D方阵。

支持平台:

GPU CPU

样例:

>>> import numpy as onp
>>> from mindspore import Tensor
>>> from mindspore.scipy.linalg import cho_factor
>>> a = Tensor(onp.array([[9, 3, 1, 5], [3, 7, 5, 1], [1, 5, 9, 2], [5, 1, 2, 6]]).astype(onp.float32))
>>> c, low = cho_factor(a)
>>> print(c)
[[ 3.          1.          0.33333334  1.6666666 ]
 [ 3.          2.4494898   1.9051585  -0.2721655 ]
 [ 1.          5.          2.2933078   0.8559526 ]
 [ 5.          1.          2.          1.5541857 ]]