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 np

    Attributs :

    Paramètre Type Description Valeur par défaut
    layer Layer Keras Couche récurrente à appliquer bidirectionnellement (ex: LSTM, GRU).
    merge_mode str Mode de fusion des sorties avant et arrière. Options : 'concat', 'sum', 'mul', 'ave'. 'concat'
    backward_layer Layer Keras Couche utilisée pour le sens arrière. Par défaut même que layer. None
    input_shape tuple 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()
    Résultat du code

    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.

⚠️ Ce contenu est réservé aux membres Premium

Abonnez-vous pour débloquer cette page et accéder à tous nos contenus exclusifs.

Souscrire maintenant