Función PyTorch torch.nn.ELU
Manual de referencia de PyTorch torch.nn
torch.nn.ELUEs la función de activación de unidad lineal exponencial en PyTorch.
Utiliza la función exponencial para valores negativos, permitiendo que los valores negativos tengan una salida distinta de cero, con gradientes más suaves.
Definición de la función
torch.nn.ELU(alpha=1.0, inplace=False)
Fórmula
ELU(x) = x, x > 0 ELU(x) = alpha * (e^x - 1), x <= 0
Ejemplo de uso
Ejemplo 1: Uso básico
Ejemplo
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("Entrada:", x.tolist())
print("Salida:", 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("Entrada:", x.tolist())
print("Salida:", output.tolist())
Ejemplo 2: Comparación con ReLU
Ejemplo
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}")
Ejemplo 3: Parámetro alpha
Ejemplo
import torch
import torch.nn as nn
# Diferentes valores de 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
# Diferentes valores de 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}")
Casos de uso
- Autoencoder
- Necesita salida de valores negativos
- Gradientes suaves
Consejo: ELU es más lento de calcular que ReLU, pero converge más rápido.
Otras extensiones