Fonction torch.nn.ELU de PyTorch
Manuel de référence torch.nn de PyTorch
torch.nn.ELUIl s'agit de la fonction d'activation de l'unité linéaire exponentielle dans PyTorch.
Elle utilise une fonction exponentielle pour les valeurs négatives, permettant des sorties non nulles pour les valeurs négatives et des gradients plus lisses.
Définition de fonction
torch.nn.ELU(alpha=1.0, inplace=False)
Formule
ELU(x) = x, x > 0 ELU(x) = alpha * (e^x - 1), x <= 0
Exemples d'utilisation
Exemple 1 : Utilisation de base
Exemple
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(Entrée :, x.tolist())
print(Sortie :, 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(Entrée :, x.tolist())
print(Sortie :, output.tolist())
Exemple 2 : Comparaison avec ReLU
Exemple
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}")
Exemple 3 : Paramètre alpha
Exemple
import torch
import torch.nn as nn
# Différentes valeurs 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
# Différentes valeurs 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}")
Cas d'utilisation
- Autoencodeurs
- Nécessité de sorties négatives
- Gradients lisses
Remarque : ELU est plus lent à calculer que ReLU, mais converge plus rapidement.
Autres extensions