mindspore.ops.cholesky_solve

查看源文件
mindspore.ops.cholesky_solve(input, input2, upper=False)[源代码]

根据Cholesky分解因子 input2 计算一组具有正定矩阵的线性方程组的解。

如果 upperTrueinput2 是上三角矩阵,输出的结果:

\[output = (input2^{T} * input2)^{{-1}}input\]

如果 upperFalseinput2 是下三角矩阵,输出的结果:

\[output = (input2 * input2^{T})^{{-1}}input\]

警告

这是一个实验性API,后续可能修改或删除。

参数:
  • input (Tensor) - shape为 \((*, N, M)\) 的Tensor,表示2D或3D矩阵,数据类型是float32或float64。

  • input2 (Tensor) - shape为 \((*, N, N)\) 的Tensor,表示由2D或3D方阵组成上三角或下三角的Cholesky因子,数据类型是float32或float64。 inputinput2 必须具有相同的数据类型。

  • upper (bool, 可选) - 标志,将Cholesky因子视为上三角矩阵或下三角矩阵。默认值:False,Cholesky因子为下三角矩阵。

返回:

Tensor,shape和数据类型与 input 相同。

异常:
  • TypeError - 如果 upper 不是bool。

  • TypeError - 如果 inputinput2 的数据类型不是float32或float64。

  • TypeError - 如果 input 不是Tensor。

  • TypeError - 如果 input2 不是Tensor。

  • ValueError - 如果 inputinput2 的批次大小相同。

  • ValueError - 如果 inputinput2 的行数不同。

  • ValueError - 如果 input 不是2D或3D的矩阵。

  • ValueError - 如果 input2 不是2D或3D的方阵。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> input1 = Tensor(np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), mindspore.float32)
>>> input2 = Tensor(np.array([[2, 0, 0], [4, 1, 0], [-1, 1, 2]]), mindspore.float32)
>>> out = ops.cholesky_solve(input1, input2, upper=False)
>>> print(out)
[[ 5.8125 -2.625   0.625 ]
 [-2.625   1.25   -0.25  ]
 [ 0.625  -0.25    0.25  ]]