Функция matmul
Функция matmul выполняет матричное умножение двух тензоров.
Поведение функции зависит от размерности входных тензоров.
Для двумерных тензоров это стандартное матричное умножение.
Для одномерных - скалярное произведение.
Для многомерных - умножение с широковещанием по первым размерностям.
Функция принимает два тензора в качестве аргументов и возвращает тензор с результатом.
Синтаксис
torch.matmul(input, other)
Пример
Давайте выполним матричное умножение двух двумерных тензоров:
import torch
t1 = torch.tensor([[1, 2], [3, 4]])
t2 = torch.tensor([[5, 6], [7, 8]])
res = torch.matmul(t1, t2)
print(res)
Результат выполнения кода:
tensor([
[19, 22],
[43, 50],
])
Пример
Давайте выполним умножение одномерного и двумерного тензора:
import torch
t1 = torch.tensor([1, 2, 3])
t2 = torch.tensor([[4, 5], [6, 7], [8, 9]])
res = torch.matmul(t1, t2)
print(res)
Результат выполнения кода:
tensor([40, 46])
Пример
Давайте выполним умножение двумерного и одномерного тензора:
import torch
t1 = torch.tensor([[1, 2], [3, 4], [5, 6]])
t2 = torch.tensor([7, 8])
res = torch.matmul(t1, t2)
print(res)
Результат выполнения кода:
tensor([23, 53, 83])
Пример
Давайте выполним умножение двух одномерных тензоров (скалярное произведение):
import torch
t1 = torch.tensor([1, 2, 3])
t2 = torch.tensor([4, 5, 6])
res = torch.matmul(t1, t2)
print(res)
Результат выполнения кода:
tensor(32)
Пример
Давайте выполним умножение двух трёхмерных тензоров с широковещанием:
import torch
t1 = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
t2 = torch.tensor([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
res = torch.matmul(t1, t2)
print(res)
Результат выполнения кода:
tensor([
[[31, 34], [71, 78]],
[[147, 154], [211, 222]],
])