Spec-Zone.ru › PyTorch 2

torch.matmul

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

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

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

  • Если оба тензора одномерные, возвращается скалярное произведение (число).
  • Если оба аргумента двумерные, возвращается матричное произведение.
  • Если первый аргумент одномерный, а второй двумерный, к размерности второго аргумента добавляется 1 для целей умножения матриц. После умножения матриц добавленная размерность удаляется.
  • Если первый аргумент двумерный, а второй одномерный, возвращается произведение матрицы и вектора.
  • Если оба аргумента имеют размерность не менее 1 и хотя бы один аргумент имеет размерность N (где N > 2), то возвращается пакетное матричное произведение. Если первый аргумент одномерный, к его размерности добавляется 1 для целей пакетного матричного умножения и удаляется после. Если второй аргумент одномерный, к его размерности добавляется 1 для целей пакетного матричного умножения и удаляется после. Размеры, не являющиеся матричными (т. е. размеры пакета), векторно-расширяются (и, следовательно, должны быть совместимы для векторного расширения). Например, если input — тензор (j×1×n×n)(j \times 1 \times n \times n) и other — тензор (k×n×n)(k \times n \times n), то out будет тензором (j×k×n×n)(j \times k \times n \times n).

    Обратите внимание, что логика векторизации рассматривает только размерности пакета при определении совместимости ввода, а не размерности матриц. Например, если input — тензор (j×1×n×m)(j \times 1 \times n \times m) и other — тензор (k×m×p)(k \times 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])

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

Spec-Zone.ru

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