Spec-Zone.ru › PyTorch 2.14

torch.linalg.solve

torch.linalg.solve(A, B, *, left=True, out=None) → Tensor [исходный код]

Вычисляет решение квадратной системы линейных уравнений, имеющей единственное решение.

Пусть K\mathbb{K} — это R\mathbb{R} или C\mathbb{C}. Эта функция вычисляет решение X∈Kn×kX \in \mathbb{K}^{n \times k} системы линейных уравнений, соответствующей A∈Kn×n,B∈Kn×kA \in \mathbb{K}^{n \times n}, B \in \mathbb{K}^{n \times k}, которая задаётся следующим образом:

AX=BAX = B

Если left= False, эта функция возвращает матрицу X∈Kn×kX \in \mathbb{K}^{n \times k}, которая является решением системы

XA=BA∈Kk×k,B∈Kn×k.XA = B\mathrlap{\qquad A \in \mathbb{K}^{k \times k}, B \in \mathbb{K}^{n \times k}.}

Эта система линейных уравнений имеет единственное решение тогда и только тогда, когда AA является обратимой. Эта функция предполагает, что матрица AA обратима.

Поддерживаются входные данные типов float, double, cfloat и cdouble. Также поддерживаются пакеты матриц; если входные данные являются пакетами матриц, выходные данные имеют те же размерности пакета.

Пусть * обозначает ноль или более размерностей пакета.

  • Если A имеет форму (*, n, n), а B имеет форму (*, n) (пакет векторов) или форму (*, n, k) (пакет матриц или «несколько правых частей»), эта функция возвращает X формы (*, n) или (*, n, k) соответственно.
  • В противном случае, если A имеет форму (*, n, n), а B имеет форму (n,) или (n, k), B расширяется по правилам broadcasting до формы (*, n) или (*, n, k) соответственно. Затем эта функция возвращает решение полученного пакета систем линейных уравнений.

Примечание

Эта функция вычисляет X = A.inverse() @ B быстрее и с большей численной устойчивостью, чем выполнение вычислений по отдельности.

Примечание

Решение системы XA=BXA = B можно вычислить, передав транспонированные входные данные A и B, а затем транспонировав результат, возвращаемый этой функцией.

Примечание

Для A допускается отсутствие пакетной размерности у torch.sparse_csr_tensor, но только при left=True.

Примечание

Если входные данные находятся на устройстве CUDA, эта функция синхронизирует это устройство с CPU. Версию этой функции, которая не выполняет синхронизацию, см. в разделе torch.linalg.solve_ex().

См. также

torch.linalg.solve_triangular() вычисляет решение треугольной системы линейных уравнений, имеющей единственное решение.

Параметры:
  • A (Tensor) – тензор формы (*, n, n), где * обозначает ноль или более размерностей пакета.
  • B (Tensor) – тензор правой части формы (*, n), (*, n, k), (n,) или (n, k) согласно правилам, описанным выше
Именованные аргументы:
  • left (bool, необязательный) – определяет, следует ли решать систему AX=BAX=B или XA=BXA = B. Значение по умолчанию: True.
  • out (Tensor, необязательный) – выходной тензор. Игнорируется, если None. Значение по умолчанию: None.
Вызывает исключение:

RuntimeError – если матрица A необратима или какая-либо матрица в пакете A необратима.

Примеры:

>>> A = torch.randn(3, 3)
>>> b = torch.randn(3)
>>> x = torch.linalg.solve(A, b)
>>> torch.allclose(A @ x, b)
True
>>> A = torch.randn(2, 3, 3)
>>> B = torch.randn(2, 3, 4)
>>> X = torch.linalg.solve(A, B)
>>> X.shape
torch.Size([2, 3, 4])
>>> torch.allclose(A @ X, B)
True

>>> A = torch.randn(2, 3, 3)
>>> b = torch.randn(3, 1)
>>> x = torch.linalg.solve(A, b) # b is broadcasted to size (2, 3, 1)
>>> x.shape
torch.Size([2, 3, 1])
>>> torch.allclose(A @ x, b)
True
>>> b = torch.randn(3)
>>> x = torch.linalg.solve(A, b) # b is broadcasted to size (2, 3)
>>> x.shape
torch.Size([2, 3])
>>> Ax = A @ x.unsqueeze(-1)
>>> torch.allclose(Ax, b.unsqueeze(-1).expand_as(Ax))
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.solve.html

Spec-Zone.ru

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