torch.matmul
-
torch.matmul(input, other, *, out=None) → Tensor -
Матричное произведение двух тензоров.
Поведение зависит от размерности тензоров следующим образом:
- Если оба тензора одномерные, возвращается скалярное произведение (число).
- Если оба аргумента двумерные, возвращается матрично-матричное произведение.
- Если первый аргумент одномерный, а второй двумерный, к его размерности добавляется 1 для целей умножения матриц. После умножения матриц добавленная размерность удаляется.
- Если первый аргумент двумерный, а второй одномерный, возвращается матрично-векторное произведение.
-
Если оба аргумента имеют размерность не меньше 1, и хотя бы один аргумент имеет размерность N (где N > 2), то возвращается пакетное матричное произведение. Если первый аргумент одномерный, к его размерности добавляется 1 для целей пакетного матричного произведения и удаляется после. Если второй аргумент одномерный, к его размерности добавляется 1 для целей пакетного матричного произведения и удаляется после. Нематричные (т.е. пакетные) размерности расширяются (и, следовательно, должны быть совместимы). Например, если
input— тензор иother— тензор , тоoutбудет тензором .Обратите внимание, что логика расширения применяется только к пакетным размерностям при определении возможности расширения входных данных, а не к размерностям матриц. Например, если
input— тензор иother— тензор , эти входные данные подходят для расширения, даже если последние две размерности (т.е. размерности матриц) отличаются.outбудет тензором .
Данный оператор поддерживает аргументы с разреженными макетами. В частности, матрично-матричное произведение (оба аргумента двумерные) поддерживает разреженные аргументы с теми же ограничениями, что и
torch.mm()Предупреждение
Поддержка разреженных данных — бета-функция, и некоторые макеты/типы данных/устройства могут не поддерживаться или не поддерживать автоматическое дифференцирование. Если вы обнаружите недостающую функциональность, пожалуйста, отправьте запрос на добавление функции.
Этот оператор поддерживает TensorFloat32.
На некоторых устройствах ROCm при использовании входных данных float16 этот модуль будет использовать разную точность для обратного прохода.
Примечание
Версия данной функции для одномерного скалярного произведения не поддерживает параметр
out.- Параметры:
- Ключевые аргументы:
-
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/1.13/generated/torch.matmul.html