mindspore.ops.ormqr

mindspore.ops.ormqr(input, tau, other, left=True, transpose=False)[source]

Calculates two matrices multiplication of a product of a general matrix with Householder matrices. Calculates the product of a matrix C(given by other) with dimensions (m, n) and a matrix Q which is represented using Householder reflectors (input, tau). Returns a Tensor.

Parameters
  • input (Tensor) – Tensor of shape \((*, mn, k)\), when left is True, mn equals to m, otherwise, mn equals to n. And * is zero or more batch dimensions.

  • tau (Tensor) – Tensor of shape \((*, min(mn, k))\) where * is zero or more batch dimensions, and its type is the same as input.

  • other (Tensor) – Tensor of shape \((*, m, n)\) where * is zero or more batch dimensions, and its type is the same as input.

  • left (bool, optional) – determines the order of multiplication. If True, computes op(Q) * other , otherwise, compute other * op(Q). Default: True .

  • transpose (bool, optional) – If True, the matrix Q is conjugate transposed, otherwise, not conjugate transposing matrix Q. Default: False .

Returns

Tensor, with the same type and shape as other.

Raises
  • TypeError – If input or tau or other is not Tensor.

  • TypeError – If dtype of input or tau or other is not one of: float64, float32, complex64, complex128.

  • ValueError – If the dimension of input or other is less than 2D.

  • ValueError – If rank(input) - rank(tau) != 1.

  • ValueError – If tau.shape[:-2] != input.shape[:-2]

  • ValueError – If other.shape[:-2] != input.shape[:-2]

  • ValueError – If left == true, other.shape[-2] < tau.shape[-1].

  • ValueError – If left == true, other.shape[-2] != input.shape[-2].

  • ValueError – If left == false, other.shape[-1] < tau.shape[-1].

  • ValueError – If left == false, other.shape[-1] != input.shape[-2].

Supported Platforms:

GPU

Examples

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> input = Tensor(np.array([[-114.6, 10.9, 1.1], [-0.304, 38.07, 69.38], [-0.45, -0.17, 62]]),
>>>                mindspore.float32)
>>> tau = Tensor(np.array([1.55, 1.94, 3.0]), mindspore.float32)
>>> other = Tensor(np.array([[-114.6, 10.9, 1.1],
...                          [-0.304, 38.07, 69.38],
...                          [-0.45, -0.17, 62]]), mindspore.float32)
>>> output = ops.ormqr(input, tau, other)
>>> print(output)
[[  63.82713   -13.823125 -116.28614 ]
 [ -53.659264  -28.157839  -70.42702 ]
 [ -79.54292    24.00183   -41.34253 ]]