Couches récurrentes (Bidirectional)
Les couches Bidirectional sont des couches récurrentes utilisées dans les réseaux de neurones pour traiter des données séquentielles en capturant des dépendances dans les deux sens : du passé vers le futur et du futur vers le passé. L’objectif est d’améliorer la compréhension des séquences en exploitant l’information contextuelle complète.
Le principe consiste à combiner deux couches récurrentes identiques (SimpleRNN, LSTM ou GRU) : l’une parcourt la séquence dans le sens normal et l’autre dans le sens inverse. Les sorties des deux couches sont ensuite fusionnées (concaténées ou additionnées) pour produire une représentation enrichie de chaque étape de la séquence.
Les couches Bidirectional sont utilisées dans les tâches de classification de séquences, traduction automatique, reconnaissance vocale, analyse de texte et toute situation où le contexte futur et passé est pertinent pour la prédiction.
En résumé, les couches Bidirectional permettent d’exploiter simultanément les informations passées et futures dans les séquences, améliorant la capacité du réseau à comprendre les patterns contextuels.
Fonctions :
-
Bidirectional()
La couche Bidirectional enveloppe une couche récurrente (comme LSTM, GRU ou SimpleRNN) afin d'appliquer un traitement dans les deux sens (avant et arrière) sur une séquence. Cela permet au modèle d'accéder à l'information passée et future dans la séquence, améliorant souvent la performance sur les tâches séquentielles.
Importation :
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Bidirectional, LSTM, Dense import numpy as npAttributs :
Paramètre Type Description Valeur par défaut layerLayer Keras Couche récurrente à appliquer bidirectionnellement (ex: LSTM, GRU). — merge_modestr Mode de fusion des sorties avant et arrière. Options : 'concat','sum','mul','ave'.'concat'backward_layerLayer Keras Couche utilisée pour le sens arrière. Par défaut même que layer.Noneinput_shapetuple Forme des données d'entrée (passé à la couche enveloppée). — Exemple de code :
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Bidirectional, LSTM, Dense import numpy as np # Données simulées : 100 séquences, chaque séquence de longueur 10, avec 8 features par pas de temps X = np.random.rand(100, 10, 8) y = np.random.randint(0, 2, size=(100, 1)) # Modèle avec couche Bidirectional LSTM model = Sequential() model.add(Bidirectional(LSTM(16), input_shape=(10, 8))) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.summary()
Explication du code :
Importation des bibliothèques
Les classes `Bidirectional`, `LSTM`, `Dense` et `Sequential` sont importées depuis Keras pour construire un modèle séquentiel.Création des données
Les données sont des séquences aléatoires : 100 exemples, chacun avec 10 pas de temps et 8 caractéristiques par pas.Définition du modèle
La couche `Bidirectional` applique un LSTM dans les deux sens (avant et arrière) sur chaque séquence. La sortie est ensuite connectée à une couche dense avec activation sigmoïde pour une classification binaire.Compilation
Le modèle est compilé avec l’optimiseur Adam et la fonction de perte binaire.