Функция mul
Функция mul выполняет поэлементное умножение двух тензоров или тензора на скаляр. Первым параметром передаётся тензор или скаляр, вторым - также тензор или скаляр. Функция поддерживает механизм вещания (broadcasting), что позволяет умножать тензоры разных размерностей при определённых условиях. Результатом является новый тензор с поэлементным произведением.
Синтаксис
torch.mul(a, b)
Где a и b - тензоры или скалярные значения.
Пример
Выполним поэлементное умножение двух тензоров одинаковой размерности:
import torch
t1 = torch.tensor([1, 2, 3, 4, 5])
t2 = torch.tensor([10, 20, 30, 40, 50])
res = torch.mul(t1, t2)
print(res)
Результат выполнения кода:
tensor([10, 40, 90, 160, 250])
Каждый элемент результирующего тензора - это произведение соответствующих элементов исходных тензоров.
Пример
Умножим тензор на скалярное значение:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
res = torch.mul(t, 3)
print(res)
Результат выполнения кода:
tensor([3, 6, 9, 12, 15])
Пример
Использование механизма вещания при умножении тензоров разных форм:
import torch
t1 = torch.tensor([[1, 2, 3], [4, 5, 6]])
t2 = torch.tensor([10, 20, 30])
res = torch.mul(t1, t2)
print(res)
Результат выполнения кода:
tensor([
[10, 40, 90],
[40, 100, 180],
])
Вектор t2 был автоматически расширен для поэлементного умножения с каждой строкой матрицы t1.
Пример
Умножение с использованием оператора * вместо функции mul:
import torch
t1 = torch.tensor([1, 2, 3, 4, 5])
t2 = torch.tensor([2, 4, 6, 8, 10])
res = t1 * t2
print(res)
Результат выполнения кода:
tensor([2, 8, 18, 32, 50])
Оба способа эквивалентны и приводят к одному результату.