Функция gelu
Функция gelu реализует активацию Gaussian Error Linear Unit (GELU), которая вычисляется как произведение входного значения на функцию распределения стандартного нормального распределения. В отличие от функции relu, GELU является гладкой и дифференцируемой на всей числовой оси. Функция принимает на вход тензор и возвращает тензор той же формы, применяя активацию к каждому элементу.
Синтаксис
torch.gelu(input, approximate='none')
Параметр input - это входной тензор, к которому применяется активация. Параметр approximate определяет метод аппроксимации: 'none' (точное вычисление) или 'tanh' (быстрая аппроксимация через гиперболический тангенс).
Пример
Давайте применим функцию gelu к тензору с различными значениями:
import torch
t = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
res = torch.gelu(t)
print(res)
Результат выполнения кода:
tensor([-0.0041, -0.1588, 0.0000, 0.8412, 2.9959])
Пример
Используем аппроксимацию через гиперболический тангенс для ускорения вычислений:
import torch
t = torch.tensor([-2.0, -0.5, 0.5, 2.0])
res = torch.gelu(t, approximate='tanh')
print(res)
Результат выполнения кода:
tensor([-0.0454, -0.1543, 0.3457, 1.9546])
Пример
Применим GELU активацию к двумерному тензору:
import torch
t = torch.tensor([
[-2.0, -1.0, 0.0],
[1.0, 2.0, 3.0]
])
res = torch.gelu(t)
print(res)
Результат выполнения кода:
tensor([
[-0.0454, -0.1588, 0.0000],
[0.8412, 1.9546, 2.9959]
])