Computes the multiplicative inverse of torch_tensordot()
Computes the multiplicative inverse of torch_tensordot()
If m is the product of the first ind dimensions of A and n is the product of the rest of the dimensions, this function expects m and n to be equal. If this is the case, it computes a tensor X such that tensordot(A, X, ind) is the identity matrix in dimension m.
linalg_tensorinv(A, ind =3L)
Arguments
A: (Tensor): tensor to invert.
ind: (int): index at which to compute the inverse of torch_tensordot(). Default: 3.
Details
Supports input of float, double, cfloat and cdouble dtypes.
Note
Consider using linalg_tensorsolve() if possible for multiplying a tensor on the left by the tensor inverse as linalg_tensorsolve(A, B) == torch_tensordot(linalg_tensorinv(A), B))
It is always prefered to use linalg_tensorsolve() when possible, as it is faster and more numerically stable than computing the pseudoinverse explicitly.
Examples
if(torch_is_installed()){A <- torch_eye(4*6)$reshape(c(4,6,8,3))Ainv <- linalg_tensorinv(A, ind =3)Ainv$shape
B <- torch_randn(4,6)torch_allclose(torch_tensordot(Ainv, B), linalg_tensorsolve(A, B))A <- torch_randn(4,4)Atensorinv <- linalg_tensorinv(A,2)Ainv <- linalg_inv(A)torch_allclose(Atensorinv, Ainv)}