Spec-Zone.ru › PyTorch 2.14

torch.matmul

torch.matmul(input, other, *, out=None) → Tensor

Матричное произведение двух тензоров.

Поведение зависит от размерности тензоров следующим образом:

  • Если оба тензора одномерные, возвращается скалярное произведение (скаляр).
  • Если оба аргумента двумерные, возвращается произведение матриц.
  • Если первый аргумент одномерный, а второй двумерный, для выполнения умножения матриц к его размерности добавляется единица. После умножения матриц добавленная размерность удаляется.
  • Если первый аргумент двумерный, а второй одномерный, возвращается произведение матрицы на вектор.
  • Если оба аргумента имеют размерность не меньше 1 и хотя бы один аргумент является N-мерным (где N > 2), возвращается результат пакетного умножения матриц. Если первый аргумент одномерный, для выполнения пакетного умножения матриц к его размерности добавляется единица, которая затем удаляется. Если второй аргумент одномерный, для выполнения пакетного умножения матриц к его размерности добавляется единица, которая затем удаляется.

    Первые N-2 размерности каждого аргумента, пакетные размерности, транслируются (и, следовательно, должны допускать трансляцию). Последние 2 размерности — матричные — обрабатываются так же, как при произведении матриц.

    Например, если input — тензор размерности (j×1×n×m)(j \times 1 \times n \times m), а other — тензор размерности (k×m×p)(k \times m \times p), пакетные размерности равны (j×1)(j \times 1) и (k)(k), а матричные размерности — (n×m)(n \times m) и (m×p)(m \times p). out будет тензором размерности (j×k×n×p)(j \times k \times n \times p).

Эта операция поддерживает аргументы с разреженными форматами. В частности, для произведения матриц (оба аргумента двумерные) поддерживаются разреженные аргументы с теми же ограничениями, что и для torch.mm()

Предупреждение

Поддержка разреженных тензоров — экспериментальная функция; некоторые комбинации формата, типа данных и устройства могут не поддерживаться или не поддерживать автоматическое дифференцирование. Если вы обнаружили отсутствующую функциональность, отправьте запрос на её добавление.

Этот оператор поддерживает TensorFloat32.

На некоторых устройствах ROCm при использовании входных данных типа float16 этот модуль применяет иную точность при обратном проходе.

Примечание

Версия этой функции, вычисляющая скалярное произведение одномерных тензоров, не поддерживает параметр out.

Параметры:
  • input (Tensor) – первый тензор для умножения
  • other (Tensor) – второй тензор для умножения
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> # vector x vector
>>> tensor1 = torch.randn(3)
>>> tensor2 = torch.randn(3)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([])
>>> # matrix x vector
>>> tensor1 = torch.randn(3, 4)
>>> tensor2 = torch.randn(4)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([3])
>>> # batched matrix x broadcasted vector
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(4)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3])
>>> # batched matrix x batched matrix
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(10, 4, 5)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3, 5])
>>> # batched matrix x broadcasted matrix
>>> tensor1 = torch.randn(10, 3, 4)
>>> tensor2 = torch.randn(4, 5)
>>> torch.matmul(tensor1, tensor2).size()
torch.Size([10, 3, 5])

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.matmul.html

Spec-Zone.ru

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