РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
294 of 769 menu

Класс Bilinear

Класс Bilinear применяет билинейное преобразование к двум входным тензорам. Он вычисляет результат по формуле: x1^T * weight * x2 + bias, где weight - трёхмерный тензор весов, x1 и x2 - входные тензоры. Первый параметр конструктора определяет размерность первого входного признака, второй параметр - размерность второго входного признака, третий параметр - размерность выходного признака. Четвёртым параметром можно передать смещение (bias).

Синтаксис

torch.nn.Bilinear(in1_features, in2_features, out_features, bias=True)

Пример

Давайте создадим простой билинейный слой с размерами 5, 3 и 2:

import torch layer = torch.nn.Bilinear(5, 3, 2) print(layer)

Результат выполнения кода:

Bilinear(in_features=5, out_features=3, bias=True)

Пример

Применим слой к двум случайным тензорам. Зафиксируем зерно для воспроизводимости:

import torch torch.manual_seed(0) layer = torch.nn.Bilinear(5, 3, 2) x1 = torch.randn(1, 5) x2 = torch.randn(1, 3) res = layer(x1, x2) print(res)

Результат выполнения кода:

tensor([[ 0.0045, -0.1147]])

Пример

Билинейный слой поддерживает пакетную обработку. Создадим батч из 3 образцов:

import torch torch.manual_seed(0) layer = torch.nn.Bilinear(5, 3, 2) x1 = torch.randn(3, 5) x2 = torch.randn(3, 3) res = layer(x1, x2) print(res.shape) print(res)

Результат выполнения кода:

torch.Size([3, 2]) tensor([[-0.4162, -0.1647], [ 0.1398, -0.5746], [ 0.7928, 0.7370]])

Пример

Отключим смещение с помощью параметра bias=False:

import torch torch.manual_seed(0) layer = torch.nn.Bilinear(5, 3, 2, bias=False) x1 = torch.randn(2, 5) x2 = torch.randn(2, 3) res = layer(x1, x2) print(res.shape) print(res)

Результат выполнения кода:

torch.Size([2, 2]) tensor([[-0.8528, -1.5406], [ 0.5243, 0.4712]])

Смотрите также

  • класс Linear,
    который применяет линейное преобразование к одному тензору
  • класс LazyLinear,
    который создаёт линейный слой с ленивой инициализацией
  • класс Identity,
    который возвращает входной тензор без изменений
  • класс ReLU,
    который применяет функцию активации ReLU к тензору
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить