Функция F.bilinear
Функция F.bilinear применяется для билинейного преобразования двух входных тензоров. Она вычисляет результат по формуле: x1^T * weight * x2 + bias, где weight - это трёхмерный тензор весов размера (out_features, in1_features, in2_features). Первым параметром передаётся первый входной тензор x1 формы (batch_size, in1_features), вторым - второй входной тензор x2 формы (batch_size, in2_features). Обязательным параметром является weight - матрица весов. Дополнительно можно передать смещение bias.
Синтаксис
torch.nn.functional.bilinear(x1, x2, weight, bias=None)
Пример
Давайте выполним билинейное преобразование двух векторов:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
x1 = torch.tensor([1.0, 2.0])
x2 = torch.tensor([3.0, 4.0])
weight = torch.tensor([
[[1.0, 2.0], [3.0, 4.0]],
[[5.0, 6.0], [7.0, 8.0]]
])
bias = torch.tensor([0.1, 0.2])
res = F.bilinear(x1, x2, weight, bias)
print(res)
Результат выполнения кода:
tensor([25.1000, 65.2000])
Пример
Рассмотрим билинейное преобразование с пакетной обработкой:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
x1 = torch.tensor([
[1.0, 2.0],
[3.0, 4.0]
])
x2 = torch.tensor([
[5.0, 6.0],
[7.0, 8.0]
])
weight = torch.tensor([
[[0.1, 0.2], [0.3, 0.4]],
[[0.5, 0.6], [0.7, 0.8]]
])
bias = torch.tensor([0.5, 1.0])
res = F.bilinear(x1, x2, weight, bias)
print(res)
Результат выполнения кода:
tensor([
[1.7000, 5.7000],
[5.7000, 17.7000]
])
Пример
Используем билинейное преобразование без смещения:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
x1 = torch.tensor([2.0, 3.0])
x2 = torch.tensor([4.0, 5.0])
weight = torch.tensor([
[[1.0, 0.5], [0.2, 0.8]],
[[0.3, 0.7], [1.5, 0.4]]
])
res = F.bilinear(x1, x2, weight)
print(res)
Результат выполнения кода:
tensor([17.2000, 25.7000])
Смотрите также
-
функцию
linear,
которая выполняет линейное преобразование входных данных -
функцию
embedding,
которая создаёт встраивания для категориальных признаков -
функцию
normalize,
которая выполняет нормализацию входного тензора -
функцию
cosine_similarity,
которая вычисляет косинусное сходство между двумя тензорами