Utilisation des activations
Les activations peuvent être utilisées soit par le biais d’une couche Activation
, soit par le biais de l’argument activation
pris en charge par toutes les couches avant :
model.add(layers.Dense(64, activation=activations.relu))
Ceci est équivalent à :
Toutes les activations intégrées peuvent également être transmises via leur identifiant de chaîne de caractères:
model.add(layers.Dense(64, activation='relu'))
Activations disponibles
fonction relu
tf.keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0)
Applique la fonction d’activation d’unité linéaire rectifiée.
Avec les valeurs par défaut, cela renvoie l’activation standard ReLU:max(x, 0)
, le maximum élément par élément de 0 et le tenseur d’entrée.
Modifier les paramètres par défaut vous permet d’utiliser des seuils non nuls, de changer la valeur maximale de l’activation et d’utiliser un multiple non nul de l’entrée pour les valeurs inférieures au seuil.
Par exemple :
Arguments
- x : Entrée
tensor
ouvariable
. - alpha : Un
float
qui régit la pente pour les valeurs inférieures au seuil. - Valeur_max : Un
float
qui fixe le seuil de saturation (la plus grande valeur que la fonction retournera). - seuil : Un
float
donnant la valeur seuil de la fonction d’activation en dessous de laquelle les valeurs seront amorties ou mises à zéro.
Retourne
A Tensor
représentant le tenseur d’entrée,transformé par la fonction d’activation relu.Le tenseur sera de la même forme et dtype d’entrée x
.
Fonction sigmoïde
tf.keras.activations.sigmoid(x)
Fonction d’activation sigmoïde, sigmoid(x) = 1 / (1 + exp(-x))
.
Applique la fonction d’activation sigmoïde. Pour les petites valeurs (<-5),sigmoid
renvoie une valeur proche de zéro, et pour les grandes valeurs (>5)le résultat de la fonction se rapproche de 1.
La sigmoïde est équivalente à une Softmax à 2 éléments, où le deuxième élément estassumé être zéro. La fonction sigmoïde renvoie toujours une valeur comprise entre0 et 1.
Par exemple :
Arguments
- x : Tenseur d’entrée.
Retourne
- Tenseur avec l’activation sigmoïde :
1 / (1 + exp(-x))
.
Fonction softmax
tf.keras.activations.softmax(x, axis=-1)
Softmax convertit un vecteur réel en un vecteur de probabilités catégoriques.
Les éléments du vecteur de sortie sont dans l’intervalle (0, 1) et leur somme est égale à 1.
Chaque vecteur est traité indépendamment. L’argument axis
définit l’axe de l’entrée le long duquel la fonction est appliquée.
Le softmax est souvent utilisé comme activation pour la dernière couche d’un réseau de classification car le résultat pourrait être interprété comme une distribution de probabilité.
La softmax de chaque vecteur x est calculée commeexp(x) / tf.reduce_sum(exp(x))
.
Les valeurs d’entrée dans sont les log-odds de la probabilité résultante.
Arguments
- x : Tenseur d’entrée.
- axis : Entier, axe le long duquel la normalisation softmax est appliquée.
Retourne
Tenseur, sortie de la transformation softmax (toutes les valeurs sont non négatives et leur somme est égale à 1).
Revient
- ValueError : Dans le cas
dim(x) == 1
.
fonction softplus
tf.keras.activations.softplus(x)
Fonction d’activation softplus, softplus(x) = log(exp(x) + 1)
.
Exemple Utilisation:
Arguments
- x : Tenseur d’entrée.
Retourne
- L’activation de softplus :
log(exp(x) + 1)
.
Fonction softsign
tf.keras.activations.softsign(x)
Fonction d’activation softsign, softsign(x) = x / (abs(x) + 1)
.
Exemple d’utilisation:
>>> a = tf.constant(, dtype = tf.float32)>>> b = tf.keras.activations.softsign(a)>>> b.numpy()array(, dtype=float32)
Arguments
- x : Tenseur d’entrée.
Retourne
- L’activation du softsign :
x / (abs(x) + 1)
.
fonction tanh
tf.keras.activations.tanh(x)
Fonction d’activation tangente hyperbolique.
Par exemple:
Arguments
- x : Tenseur d’entrée.
Retourne
- Tenseur de même forme et dtype de l’entrée
x
, avec activation tanh:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x)))
.
fonction selu
tf.keras.activations.selu(x)
Scaled Exponential Linear Unit (SELU).
La fonction d’activation SELU (Scaled Exponential Linear Unit) est définie comme:
if x > 0: return scale * x
if x < 0: return scale * alpha * (exp(x) - 1)
où alpha
et scale
sont des constantes prédéfinies(alpha=1.67326324
et scale=1.05070098
).
Basiquement, la fonction d’activation SELU multiplie scale
(> 1) avec la sortie de la fonction tf.keras.activations.elu
pour assurer une pente supérieure à un pour les entrées positives.
Les valeurs de alpha
et scale
sont choisies de manière à ce que la moyenne et la variance des entrées soient préservées entre deux couches consécutives, tant que les poids sont initialiséscorrectement (voir l’initialisateur tf.keras.initializers.LecunNormal
)et que le nombre d’unités d’entrée est « suffisamment grand »(voir le document de référence pour plus d’informations).
Exemple d’utilisation:
Arguments
- x : Un tenseur ou une variable pour laquelle calculer la fonction d’activation.
Retourne
- L’activation exponentielle unitaire échelonnée :
scale * elu(x, alpha)
.
Notes: – A utiliser conjointement avec l’initialisateur tf.keras.initializers.LecunNormal
. – À utiliser conjointement avec la variante de décrochage tf.keras.layers.AlphaDropout
(pas le décrochage régulier).
Références : – Klambauer et al., 2017
Fonction elu
tf.keras.activations.elu(x, alpha=1.0)
Unité linéaire exponentielle.
L’unité linéaire exponentielle (ELU) avec alpha > 0
est:x
si x > 0
etalpha * (exp(x) - 1)
si x < 0
L’hyperparamètre ELU alpha
contrôle la valeur à laquelle une ELU sature pour des entrées nettes négatives. Les ELUs diminuent l’effet de gradient croissant.
Les ELUs ont des valeurs négatives qui poussent la moyenne des activations plus près de zéro.Les activations moyennes plus proches de zéro permettent un apprentissage plus rapide car elles rapprochent le gradient du gradient naturel.Les ULE saturent à une valeur négative lorsque l’argument devient plus petit.La saturation signifie une petite dérivée qui diminue la variationet l’information qui est propagée à la couche suivante.
Exemple d’utilisation:
Arguments
- x : Tenseur d’entrée.
- alpha : Un scalaire, pente de section négative.
alpha
contrôle la valeur à laquelle une ULE sature pour les entrées négatives du réseau.
Retourne
- La fonction d’activation de l’unité linéaire exponentielle (ULE) :
x
six > 0
etalpha * (exp(x) - 1)
six < 0
.
Référence : Apprentissage rapide et précis de réseaux profonds par unités linéaires exponentielles (ELU) (Clevert et al, 2016)
fonction exponentielle
tf.keras.activations.exponential(x)
Fonction d’activation exponentielle.
Par exemple:
Arguments
- x : Tenseur d’entrée.
Retourne
- Tenseur avec activation exponentielle :
exp(x)
.
Création d’activations personnalisées
Vous pouvez également utiliser un appelable TensorFlow comme activation(dans ce cas, il doit prendre un tenseur et retourner un tenseur de la même forme et du même dtype):
model.add(layers.Dense(64, activation=tf.nn.tanh))
A propos des couches d' »activation avancée »
Les activations qui sont plus complexes qu’une simple fonction TensorFlow (par ex. les activations apprenantes, qui maintiennent un état)sont disponibles en tant que couches d’activation avancées,et peuvent être trouvées dans le module tf.keras.layers.advanced_activations
. Il s’agit notamment de PReLU
et LeakyReLU
.Si vous avez besoin d’une activation personnalisée qui nécessite un état, vous devez l’implémenter en tant que couche personnalisée.
Notez que vous ne devez pas passer les instances de couches d’activation en tant qu’argument activation
d’une couche.Elles sont destinées à être utilisées comme des couches ordinaires, par exemple:
x = layers.Dense(10)(x)x = layers.LeakyReLU()(x)
.