Couches d’attention (AdditiveAttention)
Fonctions :
-
AdditiveAttention()
La couche AdditiveAttention implémente un mécanisme d’attention additive (aussi appelé attention de Bahdanau). Contrairement à l’attention multiplicative (dot-product), elle calcule l’attention en combinant linéairement les requêtes et clés via un réseau de neurones, ce qui peut mieux modéliser certaines relations complexes entre séquences.
Importation :
from tensorflow.keras.layers import AdditiveAttention import numpy as np
Attributs :
Paramètre Type Description Valeur par défaut use_scale
bool Applique une mise à l’échelle des scores d’attention pour stabiliser l’apprentissage. False
dropout
float Taux de dropout appliqué sur les poids d’attention. 0.0
score_bias
bool Ajoute un biais lors du calcul des scores d’attention. True
Exemple de code :
from tensorflow.keras.layers import AdditiveAttention import numpy as np # Données simulées : batch de 1 séquence de 3 vecteurs de dimension 5 query = np.random.rand(1, 3, 5).astype(np.float32) value = np.random.rand(1, 4, 5).astype(np.float32) key = np.random.rand(1, 4, 5).astype(np.float32) # Couche AdditiveAttention attention = AdditiveAttention() # Calcul de l'attention output = attention([query, value, key]) print("Shape sortie :", output.shape) # (1, 3, 5)
Explication du code :
Importation de la couche
On importe la couche `AdditiveAttention` de Keras.Préparation des données
On crée des tenseurs `query` (3 vecteurs), `key` et `value` (4 vecteurs chacun) dans un batch de taille 1.Définition de la couche
On instancie la couche `AdditiveAttention` sans paramètres particuliers.Calcul de l’attention
On applique la couche à la liste `[query, value, key]` (ordre requis par la couche) pour calculer l’attention additive.Sortie
La sortie a la forme de la requête, ici (1, 3, 5), avec les vecteurs recombinés selon les poids d’attention.