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

Функция F.glu

Функция F.glu реализует механизм Gated Linear Unit (GLU). Она принимает входной тензор и размерность, по которой будет производиться разделение. Входной тензор должен иметь чётное количество элементов по указанной размерности. Функция разделяет тензор на две равные части, применяет функцию активации сигмоида ко второй части и умножает её на первую часть. Это позволяет модели контролировать поток информации и обучаться фильтровать нерелевантные признаки.

Синтаксис

torch.nn.functional.glu(input, dim=-1)

Параметры функции:

  • input (Tensor) - входной тензор, который будет преобразован;
  • dim (int) - размерность, по которой будет производиться разделение. По умолчанию равно -1 (последняя размерность).

Пример с одномерным тензором

Давайте применим функцию glu к одномерному тензору из шести элементов:

import torch import torch.nn.functional as F t = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0, 6.0]) res = F.glu(t) print(res)

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

tensor([1.0000, 1.9640, 2.8952])

Функция разделила тензор на две части: первую ([1, 2, 3]) и вторую ([4, 5, 6]). Ко второй части была применена сигмоида, а затем выполнено поэлементное умножение.

Пример с двумерным тензором

Рассмотрим работу функции с двумерным тензором, где разделение будет происходить по последней размерности:

import torch import torch.nn.functional as F t = torch.tensor([ [1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0] ]) res = F.glu(t, dim=1) print(res)

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

tensor([ [0.9820, 1.9640], [4.9750, 5.9640] ])

В этом примере тензор размерности 2x4 был разделён на две части по размерности 1 (столбцы). Первая часть содержит первые два столбца, вторая - оставшиеся два. Затем ко второй части была применена сигмоида и выполнено умножение с первой частью.

Пример с трёхмерным тензором

Покажем использование F.glu с трёхмерным тензором, где разделение будет происходить по размерности каналов:

import torch import torch.nn.functional as F t = torch.randn(2, 4, 3) torch.manual_seed(0) res = F.glu(t, dim=1) print(res.shape)

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

torch.Size([2, 2, 3])

Выходной тензор имеет размерность 2x2x3, потому что по размерности 1 (каналы) количество элементов уменьшилось вдвое.

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

  • функцию sigmoid,
    которая применяет сигмоидальную функцию активации к тензору
  • функцию softmax,
    которая преобразует значения тензора в вероятности
  • функцию relu,
    которая применяет функцию активации ReLU
  • функцию gumbel_softmax,
    которая выполняет дискретное выборку с использованием Gumbel-Softmax
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить