Spec-Zone.ru › PyTorch 2.14

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.
Именованные аргументы:

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API