torch.linalg.tensorinv
-
torch.linalg.tensorinv(A, ind=2, *, out=None) → Tensor[source] -
Вычисляет мультипликативную обратную величину для
torch.tensordot().Если
mявляется произведением первыхindизмеренийA, аn— произведением остальных измерений, эта функция требует, чтобыmиnбыли равны. В этом случае она вычисляет тензорXтакой, чтоtensordot(A, X,ind)является единичной матрицей размерностиm.Xбудет иметь формуA, но первыеindизмерения будут перенесены в конецX.shape == A.shape[ind:] + A.shape[:ind]
Поддерживаются входные данные с типами float, double, cfloat и cdouble.
Примечание
Если
A— это тензор размерности2, аind= 1, эта функция вычисляет (мультипликативную) обратную величину дляA(см.torch.linalg.inv()).Примечание
Если возможно, для умножения тензора слева на обратный тензор используйте
torch.linalg.tensorsolve(), например:linalg.tensorsolve(A, B) == torch.tensordot(linalg.tensorinv(A), B) # When B is a tensor with shape A.shape[:B.ndim]
По возможности всегда предпочтительно использовать
tensorsolve(), поскольку этот способ быстрее и численно устойчивее, чем явное вычисление псевдообратной матрицы.См. также
torch.linalg.tensorsolve()вычисляетtorch.tensordot(tensorinv(A),B).- Параметры:
-
-
A (Tensor) – тензор, для которого вычисляется обратная величина. Его форма должна удовлетворять условию
prod(A.shape[:ind]) == prod(A.shape[ind:]). -
ind (int) – индекс, по которому вычисляется обратная величина для
torch.tensordot(). По умолчанию:2.
-
A (Tensor) – тензор, для которого вычисляется обратная величина. Его форма должна удовлетворять условию
- Именованные аргументы:
-
out (Tensor, необязательный) – выходной тензор. Игнорируется, если
None. По умолчанию:None. - Вызывает исключения:
-
RuntimeError – если преобразованный
Aнеобратим или произведение первыхindизмерений не равно произведению остальных.
Примеры:
>>> A = torch.eye(4 * 6).reshape((4, 6, 8, 3)) >>> Ainv = torch.linalg.tensorinv(A, ind=2) >>> Ainv.shape torch.Size([8, 3, 4, 6]) >>> B = torch.randn(4, 6) >>> torch.allclose(torch.tensordot(Ainv, B), torch.linalg.tensorsolve(A, B)) True >>> A = torch.randn(4, 4) >>> Atensorinv = torch.linalg.tensorinv(A, ind=1) >>> Ainv = torch.linalg.inv(A) >>> torch.allclose(Atensorinv, Ainv) True
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.linalg.tensorinv.html