mindspore.ops.svd

View Source On Gitee
mindspore.ops.svd(input, full_matrices=False, compute_uv=True)[source]

Computes the singular value decompositions of one or more matrices.

If A is a matrix, the svd returns the singular values S, the left singular vectors U and the right singular vectors V. It meets:

A=Udiag(S)VT
Parameters
  • input (Tensor) – The input tensor, shape is (,M,N).

  • full_matrices (bool, optional) – If True , compute full-sized U and V. If False, compute only the leading P singular vectors, with P is the minimum of M and N. Default False .

  • compute_uv (bool, optional) – If True , compute the left and right singular vectors. If False, compute only the singular values. Default True .

Returns

If compute_uv is True , a tuple( s , u , v ) of tensors will be returned. Otherwise, only a single tensor -> s will be returned.

  • s is the singular value tensor. The shape is (,P).

  • u is the left singular tensor. If compute_uv is False , u will not be returned. The shape is (,M,P). If full_matrices is True , the shape will be (,M,M).

  • v is the right singular tensor. If compute_uv is False , v will not be returned. The shape is (,N,P). If full_matrices is True , the shape will be (,N,N).

Supported Platforms:

Ascend GPU CPU

Examples

>>> import mindspore
>>> input = mindspore.tensor([[1, 2], [-4, -5], [2, 1]], mindspore.float32)
>>> s, u, v = mindspore.ops.svd(input, full_matrices=True, compute_uv=True)
>>> print(s)
[7.0652843 1.040081 ]
>>> print(u)
[[ 0.30821905 -0.48819482  0.81649697]
 [-0.90613353  0.11070572  0.40824813]
 [ 0.2896955   0.8656849   0.4082479 ]]
>>> print(v)
[[ 0.63863593  0.769509  ]
 [ 0.769509   -0.63863593]]