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 - 若输入 x 或 a 不是Tensor。
TypeError - 若 x 或 a 的数据类型不是以下之一:float16、float32、float64。
TypeError - 若 x 或 a 的数据类型不同。
ValueError - 若 x 的维度不等于2。
ValueError - 若 a 的维度不等于2或1。
ValueError - 若 x 与 a 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]]