Couches de pooling (AveragePooling1D)
Les couches AveragePooling1D sont utilisées dans les réseaux de neurones pour réduire la dimension des données séquentielles tout en conservant une représentation moyenne des caractéristiques locales. L’objectif est de simplifier les séquences et de diminuer le coût computationnel des couches suivantes.
Le principe consiste à diviser la séquence en segments de taille fixe et à calculer la moyenne des valeurs dans chaque segment. Cette opération réduit la taille de la séquence, atténue les variations locales et rend le réseau plus robuste aux perturbations dans les données.
Les couches AveragePooling1D sont utilisées dans les réseaux Conv1D appliqués aux séries temporelles, au texte ou aux signaux audio, et sont souvent suivies de couches fully connected ou d’autres couches de convolution.
En résumé, les couches AveragePooling1D permettent de réduire la dimensionnalité des données séquentielles tout en conservant une moyenne représentative des motifs détectés par le réseau.
Fonctions :
-
AveragePooling1D()
AveragePooling1D est une couche qui applique un pooling moyen sur une fenêtre glissante 1D. Elle est utilisée principalement pour réduire la dimension des séquences en calculant la moyenne des valeurs dans chaque fenêtre, ce qui permet de lisser les données tout en réduisant leur taille.
Importation :
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import AveragePooling1D, Flatten, Dense import numpy as npAttributs :
Paramètre Type Description Valeur par défaut pool_sizeint Taille de la fenêtre de pooling. 2stridesint Pas de déplacement de la fenêtre de pooling. None(équivalent àpool_size)paddingstr 'valid'(sans remplissage) ou'same'(conserve la taille).'valid'data_formatstr 'channels_last'(longueur, canaux) ou'channels_first'(canaux, longueur).'channels_last'Exemple de code :
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import AveragePooling1D, Flatten, Dense import numpy as np # Données simulées : 30 séquences de longueur 10 avec 1 canal X = np.random.rand(30, 10, 1) y = np.random.randint(0, 2, size=(30,)) # Modèle simple avec AveragePooling1D model = Sequential() model.add(AveragePooling1D(pool_size=2, input_shape=(10, 1))) model.add(Flatten()) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.summary()
Explication du code :
Importation des bibliothèques
On importe `AveragePooling1D`, `Flatten`, et `Dense` depuis TensorFlow Keras.Création des données
Les données simulées sont 30 séquences 1D de longueur 10 avec un seul canal. Les labels sont binaires.Définition du modèle
La couche `AveragePooling1D` réduit la longueur des séquences en calculant la moyenne sur des fenêtres de taille 2. Ensuite, `Flatten` convertit la sortie en vecteur pour la couche dense finale.Compilation
Le modèle est compilé pour un problème de classification binaire avec l’optimiseur Adam.