Функция torch.nn.ELU в PyTorch
Справочное руководство PyTorch torch.nn
torch.nn.ELUЭто функция активации экспоненциальной линейной единицы в PyTorch.
Она использует экспоненциальную функцию для отрицательных значений, что позволяет получать ненулевые выходы для отрицательных значений и более гладкие градиенты.
Определение функции
torch.nn.ELU(alpha=1.0, inplace=False)
Формула
ELU(x) = x, x > 0 ELU(x) = alpha * (e^x - 1), x <= 0
Примеры использования
Пример 1: Базовое использование
Пример
import torch
import torch.nn as nn
elu = nn.ELU(alpha=1.0)
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
output = elu(x)
print(Ввод:, x.tolist())
print(Вывод:, output.tolist())
import torch.nn as nn
elu = nn.ELU(alpha=1.0)
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
output = elu(x)
print(Ввод:, x.tolist())
print(Вывод:, output.tolist())
Пример 2: Сравнение с ReLU
Пример
import torch
import torch.nn as nn
import numpy as np
x = np.array([-3.0, -2.0, -1.0, 0.0, 1.0, 2.0])
x_t = torch.tensor(x)
print("x ELU ReLU")
for i in range(0, 6, 1):
print(f"{x[i]:6.1f} {nn.ELU()(x_t[i:i+1]).item():9.4f} {nn.ReLU()(x_t[i:i+1]).item():9.4f}")
import torch.nn as nn
import numpy as np
x = np.array([-3.0, -2.0, -1.0, 0.0, 1.0, 2.0])
x_t = torch.tensor(x)
print("x ELU ReLU")
for i in range(0, 6, 1):
print(f"{x[i]:6.1f} {nn.ELU()(x_t[i:i+1]).item():9.4f} {nn.ReLU()(x_t[i:i+1]).item():9.4f}")
Пример 3: Параметр alpha
Пример
import torch
import torch.nn as nn
# Различные значения alpha
x = torch.tensor([-1.0])
for alpha in [0.5, 1.0, 1.5, 2.0]:
out = nn.ELU(alpha=alpha)(x)
print(f"alpha={alpha}: {out.item():.4f}")
import torch.nn as nn
# Различные значения alpha
x = torch.tensor([-1.0])
for alpha in [0.5, 1.0, 1.5, 2.0]:
out = nn.ELU(alpha=alpha)(x)
print(f"alpha={alpha}: {out.item():.4f}")
Сценарии использования
- Автоэнкодеры
- Нужны отрицательные выходы
- Гладкие градиенты
Примечание: ELU вычисляется медленнее, чем ReLU, но сходится быстрее.
Другие расширения