mindspore.ops.svd
- mindspore.ops.svd(a, 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=U*diag(S)*V^{T}\]- Parameters
a (Tensor) – Tensor of the matrices to be decomposed. The shape should be \((*, M, N)\), the supported dtype are float32 and float64..
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
s (Tensor) - Singular values. The shape is \((*, P)\).
u (Tensor) - Left singular vectors. 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 (Tensor) - Right singular vectors. 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)\).
- Raises
- Supported Platforms:
GPU
CPU
Examples
>>> import numpy as np >>> from mindspore import Tensor, set_context >>> from mindspore import ops >>> set_context(device_target="CPU") >>> a = Tensor(np.array([[1, 2], [-4, -5], [2, 1]]).astype(np.float32)) >>> s, u, v = ops.svd(a, 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]]