# tensorplay.linalg API Source: https://www.tensorplay.cn/docs/api/tensorplay.linalg.html ## Functions 44 [#](#api-tensorplay.linalg.cholesky_ex) ### cholesky_ex function[Full reference ↗](/docs/generated/tensorplay.linalg.cholesky_ex.html) ```python tensorplay.linalg.cholesky_ex(A, *, upper=False, check_errors=False) ``` [#](#api-tensorplay.linalg.cholesky) ### cholesky function[Full reference ↗](/docs/generated/tensorplay.linalg.cholesky.html) ```python tensorplay.linalg.cholesky(A, *, upper=False) → Tensor ``` [#](#api-tensorplay.linalg.cond) ### cond function[Full reference ↗](/docs/generated/tensorplay.linalg.cond.html) ```python tensorplay.linalg.cond(A, p=None) → Tensor ``` [#](#api-tensorplay.linalg.cross) ### cross function[Full reference ↗](/docs/generated/tensorplay.linalg.cross.html) ```python tensorplay.linalg.cross(input, other, *, dim=-1) → Tensor ``` [#](#api-tensorplay.linalg.det) ### det function[Full reference ↗](/docs/generated/tensorplay.linalg.det.html) ```python tensorplay.linalg.det(A) → Tensor ``` [#](#api-tensorplay.linalg.diagonal) ### diagonal function[Full reference ↗](/docs/generated/tensorplay.linalg.diagonal.html) ```python tensorplay.linalg.diagonal() ``` linalg_diagonal(A, *, offset=0, dim1=-2, dim2=-1) -> Tensor Returns a view of the diagonals of A: the two dimensions selected by dim1 and dim2 are collapsed into the trailing axis of the output, holding the entries of the diagonal shifted by offset (positive shifts above, negative below the main diagonal). See tensorplay.diagonal() [#](#api-tensorplay.linalg.eig) ### eig function[Full reference ↗](/docs/generated/tensorplay.linalg.eig.html) ```python tensorplay.linalg.eig(A) ``` [#](#api-tensorplay.linalg.eigh) ### eigh function[Full reference ↗](/docs/generated/tensorplay.linalg.eigh.html) ```python tensorplay.linalg.eigh(A, UPLO='L') ``` [#](#api-tensorplay.linalg.eigvals) ### eigvals function[Full reference ↗](/docs/generated/tensorplay.linalg.eigvals.html) ```python tensorplay.linalg.eigvals(A) → Tensor ``` [#](#api-tensorplay.linalg.eigvalsh) ### eigvalsh function[Full reference ↗](/docs/generated/tensorplay.linalg.eigvalsh.html) ```python tensorplay.linalg.eigvalsh(A, UPLO='L') → Tensor ``` [#](#api-tensorplay.linalg.householder_product) ### householder_product function[Full reference ↗](/docs/generated/tensorplay.linalg.householder_product.html) ```python tensorplay.linalg.householder_product() ``` linalg_householder_product(Tensor input, Tensor tau) -> Tensor linalg_householder_product.out(Tensor input, Tensor tau, *, Tensor(a!) out) -> Tensor(a!) [#](#api-tensorplay.linalg.inv_ex) ### inv_ex function[Full reference ↗](/docs/generated/tensorplay.linalg.inv_ex.html) ```python tensorplay.linalg.inv_ex(A, *, check_errors=False) ``` [#](#api-tensorplay.linalg.inv) ### inv function[Full reference ↗](/docs/generated/tensorplay.linalg.inv.html) ```python tensorplay.linalg.inv(A) → Tensor ``` [#](#api-tensorplay.linalg.ldl_factor_ex) ### ldl_factor_ex function[Full reference ↗](/docs/generated/tensorplay.linalg.ldl_factor_ex.html) ```python tensorplay.linalg.ldl_factor_ex() ``` linalg_ldl_factor_ex(Tensor A, *, bool hermitian=False, bool check_errors=False) -> (Tensor LD, Tensor pivots, Tensor info) linalg_ldl_factor_ex.out(Tensor self, *, bool hermitian=False, bool check_errors=False, Tensor(a!) LD, Tensor(b!) pivots, Tensor(c!) info) -> (Tensor(a!) LD, Tensor(b!) pivots, Tensor(c!) info) [#](#api-tensorplay.linalg.ldl_factor) ### ldl_factor function[Full reference ↗](/docs/generated/tensorplay.linalg.ldl_factor.html) ```python tensorplay.linalg.ldl_factor() ``` linalg_ldl_factor(Tensor A, *, bool hermitian=False) -> (Tensor LD, Tensor pivots) linalg_ldl_factor.out(Tensor self, *, bool hermitian=False, Tensor(a!) LD, Tensor(b!) pivots) -> (Tensor(a!) LD, Tensor(b!) pivots) [#](#api-tensorplay.linalg.ldl_solve) ### ldl_solve function[Full reference ↗](/docs/generated/tensorplay.linalg.ldl_solve.html) ```python tensorplay.linalg.ldl_solve() ``` linalg_ldl_solve(Tensor LD, Tensor pivots, Tensor B, *, bool hermitian=False) -> Tensor linalg_ldl_solve.out(Tensor LD, Tensor pivots, Tensor B, *, bool hermitian=False, Tensor(a!) out) -> Tensor(a!) [#](#api-tensorplay.linalg.lstsq) ### lstsq function[Full reference ↗](/docs/generated/tensorplay.linalg.lstsq.html) ```python tensorplay.linalg.lstsq(A, B, rcond=None, *, driver=None) ``` [#](#api-tensorplay.linalg.lu_factor_ex) ### lu_factor_ex function[Full reference ↗](/docs/generated/tensorplay.linalg.lu_factor_ex.html) ```python tensorplay.linalg.lu_factor_ex() ``` linalg_lu_factor_ex(Tensor A, *, bool pivot=True, bool check_errors=False) -> (Tensor LU, Tensor pivots, Tensor info) linalg_lu_factor_ex.out(Tensor A, *, bool pivot=True, bool check_errors=False, Tensor(a!) LU, Tensor(b!) pivots, Tensor(c!) info) -> (Tensor(a!) LU, Tensor(b!) pivots, Tensor(c!) info) [#](#api-tensorplay.linalg.lu_factor) ### lu_factor function[Full reference ↗](/docs/generated/tensorplay.linalg.lu_factor.html) ```python tensorplay.linalg.lu_factor() ``` linalg_lu_factor(Tensor A, *, bool pivot=True) -> (Tensor LU, Tensor pivots) linalg_lu_factor.out(Tensor A, *, bool pivot=True, Tensor(a!) LU, Tensor(b!) pivots) -> (Tensor(a!) LU, Tensor(b!) pivots) [#](#api-tensorplay.linalg.lu_solve) ### lu_solve function[Full reference ↗](/docs/generated/tensorplay.linalg.lu_solve.html) ```python tensorplay.linalg.lu_solve() ``` linalg_lu_solve(Tensor LU, Tensor pivots, Tensor B, *, bool left=True, bool adjoint=False) -> Tensor linalg_lu_solve.out(Tensor LU, Tensor pivots, Tensor B, *, bool left=True, bool adjoint=False, Tensor(a!) out) -> Tensor(a!) [#](#api-tensorplay.linalg.lu) ### lu function[Full reference ↗](/docs/generated/tensorplay.linalg.lu.html) ```python tensorplay.linalg.lu() ``` linalg_lu(Tensor A, *, bool pivot=True) -> (Tensor P, Tensor L, Tensor U) linalg_lu.out(Tensor A, *, bool pivot=True, Tensor(a!) P, Tensor(b!) L, Tensor(c!) U) -> (Tensor(a!) P, Tensor(b!) L, Tensor(c!) U) [#](#api-tensorplay.linalg.matmul) ### matmul function[Full reference ↗](/docs/generated/tensorplay.linalg.matmul.html) ```python tensorplay.linalg.matmul(input, other) → Tensor ``` [#](#api-tensorplay.linalg.matrix_exp) ### matrix_exp function[Full reference ↗](/docs/generated/tensorplay.linalg.matrix_exp.html) ```python tensorplay.linalg.matrix_exp(A) → Tensor ``` Square matrix exponential via the degree-13 Pade approximant with scaling and squaring: A is halved until its 1-norm falls under the approximant’s accuracy threshold, then the result is squared back. [#](#api-tensorplay.linalg.matrix_norm) ### matrix_norm function[Full reference ↗](/docs/generated/tensorplay.linalg.matrix_norm.html) ```python tensorplay.linalg.matrix_norm(A, ord='fro', dim=(-2, -1), keepdim=False) → Tensor ``` [#](#api-tensorplay.linalg.matrix_power) ### matrix_power function[Full reference ↗](/docs/generated/tensorplay.linalg.matrix_power.html) ```python tensorplay.linalg.matrix_power(A, n) → Tensor ``` [#](#api-tensorplay.linalg.matrix_rank) ### matrix_rank function[Full reference ↗](/docs/generated/tensorplay.linalg.matrix_rank.html) ```python tensorplay.linalg.matrix_rank(A, *, atol=None, rtol=None, hermitian=False) ``` Computes the numerical rank of each matrix in A. A singular value counts towards the rank when it exceeds the sum of an absolute tolerance and a relative tolerance scaled by the largest singular value of its matrix. Parameters: - A ([Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor)) – tensor of shape (..., m, n) holding the matrices. - atol ([float](https://docs.python.org/3/builtins/functions.html#float), [Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor), optional) – absolute threshold applied to the singular values. Defaults to 0. - rtol ([float](https://docs.python.org/3/builtins/functions.html#float), [Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor), optional) – relative threshold applied to the largest singular value. Defaults to max(m, n) times the machine epsilon of A’s dtype. - hermitian ([bool](https://docs.python.org/3/builtins/functions.html#bool)) – when True, A is treated as Hermitian and its rank is derived from eigenvalues instead of singular values. Returns: integer tensor with the rank of each matrix, with the batch dimensions of A. Return type: [Tensor](/docs/generated/tensorplay.Tensor.html#tensorplay.Tensor) [#](#api-tensorplay.linalg.matrix_sqrth) ### matrix_sqrth function[Full reference ↗](/docs/generated/tensorplay.linalg.matrix_sqrth.html) ```python tensorplay.linalg.matrix_sqrth(A) → Tensor ``` Matrix square root via the Denman-Beavers fixed-point iteration (converges for matrices with no eigenvalues on the closed negative real axis). [#](#api-tensorplay.linalg.multi_dot) ### multi_dot function[Full reference ↗](/docs/generated/tensorplay.linalg.multi_dot.html) ```python tensorplay.linalg.multi_dot(tensors) → Tensor ``` Chained matrix product evaluated in the parenthesization that minimizes the scalar multiplication count (matrix-chain dynamic program). [#](#api-tensorplay.linalg.norm) ### norm function[Full reference ↗](/docs/generated/tensorplay.linalg.norm.html) ```python tensorplay.linalg.norm(input, ord=None, dim=None, keepdim=False) → Tensor ``` [#](#api-tensorplay.linalg.pinv) ### pinv function[Full reference ↗](/docs/generated/tensorplay.linalg.pinv.html) ```python tensorplay.linalg.pinv(A, *, atol=None, rtol=None, hermitian=False) → Tensor ``` Moore-Penrose pseudo-inverse. Singular values (eigenvalue magnitudes when hermitian) at or below max(atol, rtol * sigma_max) are treated as zero; rtol defaults to eps * max(m, n), or to zero when only a positive atol is given. The tolerances may be floats or tensors that broadcast against the batch. [#](#api-tensorplay.linalg.polar) ### polar function[Full reference ↗](/docs/generated/tensorplay.linalg.polar.html) ```python tensorplay.linalg.polar(A) → (Tensor Q, Tensor R) with A = Q R ``` [#](#api-tensorplay.linalg.qr) ### qr function[Full reference ↗](/docs/generated/tensorplay.linalg.qr.html) ```python tensorplay.linalg.qr(A, mode='reduced') ``` [#](#api-tensorplay.linalg.slogdet) ### slogdet function[Full reference ↗](/docs/generated/tensorplay.linalg.slogdet.html) ```python tensorplay.linalg.slogdet(A) ``` [#](#api-tensorplay.linalg.solve_ex) ### solve_ex function[Full reference ↗](/docs/generated/tensorplay.linalg.solve_ex.html) ```python tensorplay.linalg.solve_ex(A, B, *, left=True, check_errors=False) ``` [#](#api-tensorplay.linalg.solve_triangular) ### solve_triangular function[Full reference ↗](/docs/generated/tensorplay.linalg.solve_triangular.html) ```python tensorplay.linalg.solve_triangular() ``` linalg_solve_triangular(Tensor A, Tensor B, *, bool upper, bool left=True, bool unitriangular=False) -> Tensor linalg_solve_triangular.out(Tensor self, Tensor B, *, bool upper, bool left=True, bool unitriangular=False, Tensor(a!) out) -> Tensor(a!) [#](#api-tensorplay.linalg.solve) ### solve function[Full reference ↗](/docs/generated/tensorplay.linalg.solve.html) ```python tensorplay.linalg.solve(A, B, *, left=True) → Tensor ``` [#](#api-tensorplay.linalg.svd) ### svd function[Full reference ↗](/docs/generated/tensorplay.linalg.svd.html) ```python tensorplay.linalg.svd(A, full_matrices=True, *, driver=None) ``` [#](#api-tensorplay.linalg.svdvals) ### svdvals function[Full reference ↗](/docs/generated/tensorplay.linalg.svdvals.html) ```python tensorplay.linalg.svdvals(A, *, driver=None) → Tensor ``` [#](#api-tensorplay.linalg.tensorinv) ### tensorinv function[Full reference ↗](/docs/generated/tensorplay.linalg.tensorinv.html) ```python tensorplay.linalg.tensorinv(A, ind=2) → Tensor ``` Inverse of A seen as a square matrix over the split at ind: the product of the leading ind dimensions must equal that of the rest. [#](#api-tensorplay.linalg.tensorsolve) ### tensorsolve function[Full reference ↗](/docs/generated/tensorplay.linalg.tensorsolve.html) ```python tensorplay.linalg.tensorsolve(A, B, dims=None) → Tensor ``` Solves the tensor equation A X = B after flattening the contracted dimensions into a square matrix. dims identifies dimensions of A that should be moved to the trailing side before the flattening step. [#](#api-tensorplay.linalg.vander) ### vander function[Full reference ↗](/docs/generated/tensorplay.linalg.vander.html) ```python tensorplay.linalg.vander(x, N=None) → Tensor ``` [#](#api-tensorplay.linalg.vdot) ### vdot function[Full reference ↗](/docs/generated/tensorplay.linalg.vdot.html) ```python tensorplay.linalg.vdot(self, other) → Tensor ``` Conjugating dot product over 1-D operands: sum(conj(self) * other). [#](#api-tensorplay.linalg.vecdot) ### vecdot function[Full reference ↗](/docs/generated/tensorplay.linalg.vecdot.html) ```python tensorplay.linalg.vecdot(x, y, *, dim=-1) → Tensor ``` Dot product along dim with the first argument conjugated for complex inputs. [#](#api-tensorplay.linalg.vector_norm) ### vector_norm function[Full reference ↗](/docs/generated/tensorplay.linalg.vector_norm.html) ```python tensorplay.linalg.vector_norm(x, ord=2, dim=None, keepdim=False) → Tensor ``` dim=None norms the whole tensor: the input is flattened first, and keepdim then restores the reduced axes as ones. ## Classes 7 [#](#api-tensorplay.linalg.CholeskyExResult) ### CholeskyExResult class[Full reference ↗](/docs/generated/tensorplay.linalg.CholeskyExResult.html) ```python class tensorplay.linalg.CholeskyExResult(L, info) ``` ```python L ``` Alias for field number 0 ```python count(value, /) ``` Return number of occurrences of value. ```python index(value, start=0, stop=9223372036854775807, /) ``` Return first index of value. Raises ValueError if the value is not present. ```python info ``` Alias for field number 1 [#](#api-tensorplay.linalg.EighResult) ### EighResult class[Full reference ↗](/docs/generated/tensorplay.linalg.EighResult.html) ```python class tensorplay.linalg.EighResult(eigenvalues, eigenvectors) ``` ```python count(value, /) ``` Return number of occurrences of value. ```python eigenvalues ``` Alias for field number 0 ```python eigenvectors ``` Alias for field number 1 ```python index(value, start=0, stop=9223372036854775807, /) ``` Return first index of value. Raises ValueError if the value is not present. [#](#api-tensorplay.linalg.EigResult) ### EigResult class[Full reference ↗](/docs/generated/tensorplay.linalg.EigResult.html) ```python class tensorplay.linalg.EigResult(eigenvalues, eigenvectors) ``` ```python count(value, /) ``` Return number of occurrences of value. ```python eigenvalues ``` Alias for field number 0 ```python eigenvectors ``` Alias for field number 1 ```python index(value, start=0, stop=9223372036854775807, /) ``` Return first index of value. Raises ValueError if the value is not present. [#](#api-tensorplay.linalg.LstsqResult) ### LstsqResult class[Full reference ↗](/docs/generated/tensorplay.linalg.LstsqResult.html) ```python class tensorplay.linalg.LstsqResult(solution, residuals, rank, singular_values) ``` ```python count(value, /) ``` Return number of occurrences of value. ```python index(value, start=0, stop=9223372036854775807, /) ``` Return first index of value. Raises ValueError if the value is not present. ```python rank ``` Alias for field number 2 ```python residuals ``` Alias for field number 1 ```python singular_values ``` Alias for field number 3 ```python solution ``` Alias for field number 0 [#](#api-tensorplay.linalg.QRResult) ### QRResult class[Full reference ↗](/docs/generated/tensorplay.linalg.QRResult.html) ```python class tensorplay.linalg.QRResult(Q, R) ``` ```python Q ``` Alias for field number 0 ```python R ``` Alias for field number 1 ```python count(value, /) ``` Return number of occurrences of value. ```python index(value, start=0, stop=9223372036854775807, /) ``` Return first index of value. Raises ValueError if the value is not present. [#](#api-tensorplay.linalg.SlogdetResult) ### SlogdetResult class[Full reference ↗](/docs/generated/tensorplay.linalg.SlogdetResult.html) ```python class tensorplay.linalg.SlogdetResult(sign, logabsdet) ``` ```python count(value, /) ``` Return number of occurrences of value. ```python index(value, start=0, stop=9223372036854775807, /) ``` Return first index of value. Raises ValueError if the value is not present. ```python logabsdet ``` Alias for field number 1 ```python sign ``` Alias for field number 0 [#](#api-tensorplay.linalg.SVDResult) ### SVDResult class[Full reference ↗](/docs/generated/tensorplay.linalg.SVDResult.html) ```python class tensorplay.linalg.SVDResult(U, S, Vh) ``` ```python S ``` Alias for field number 1 ```python U ``` Alias for field number 0 ```python Vh ``` Alias for field number 2 ```python count(value, /) ``` Return number of occurrences of value. ```python index(value, start=0, stop=9223372036854775807, /) ``` Return first index of value. Raises ValueError if the value is not present. ## Exceptions 1 [#](#api-tensorplay.linalg.LinAlgError) ### LinAlgError exception[Full reference ↗](/docs/generated/tensorplay.linalg.LinAlgError.html) ```python exception tensorplay.linalg.LinAlgError ``` Raised when a decomposition or solve fails on a numerically invalid input.