mindspore.ops.Lstsq

class mindspore.ops.Lstsq(fast=True, l2_regularizer=0.0)[源代码]

计算满秩矩阵 x \((m \times n)\) 与满秩矩阵 a \((m \times k)\) 的最小二乘问题或最小范数问题的解。

\(m \geq n\)Lstsq 解决最小二乘问题:

\[\begin{array}{ll} \min_y & \|xy-a\|_2. \end{array}\]

\(m < n\)Lstsq 解决最小范数问题:

\[\begin{array}{llll} \min_y & \|y\|_2 & \text{subject to} & xy = a. \end{array}\]
参数:
  • fast (bool,可选) - 使用的算法。默认值:True。

    • 如果 fast 为True,则使用Cholesky分解求解正态方程来计算解。

    • 如果 fast 为False,则基于数值鲁棒的完全正交分解的算法被使用。

  • l2_regularizer (float,可选) - L2正则化系数。默认值:0.0。

输入:
  • x (Tensor) - \((m \times n)\) 的矩阵 x 。输入Tensor的数据类型为float16、float32或float64。

  • a (Tensor) - \((m \times k)\) 的矩阵 a 。输入Tensor的数据类型为float16、float32或float64。

输出:

Tensor,最小二乘问题或最小范数问题的解,其shape为 \((n \times k)\) ,数据类型与 x 相同。

异常:
  • TypeError - 若输入 xa 不是Tensor。

  • TypeError - 若 xa 的数据类型不是以下之一:float16、float32、float64。

  • TypeError - 若 xa 的数据类型不同。

  • ValueError - 若 x 的维度不等于2。

  • ValueError - 若 a 的维度不等于2或1。

  • ValueError - 若 xa shape的第零维不相等。

支持平台:

CPU

样例:

>>> x = Tensor(np.array([[2,1,5],[3,5,1],[1,1,1]]),mindspore.float32)
>>> a = Tensor(np.array([[10,5],[15,8],[7,4]]),mindspore.float32)
>>> op = ops.Lstsq()
>>> output = op(x, a)
>>> print(output)
[[17.000002  11.000002 ]
 [-6.5000005 -4.500001 ]
 [-3.500002  -2.5000017]]