Couches de pooling (MaxPooling2D)

Les couches MaxPooling2D sont utilisées dans les réseaux de neurones convolutionnels pour réduire la dimension des images ou cartes de caractéristiques tout en conservant les informations les plus importantes. L’objectif est de simplifier les représentations spatiales et de diminuer le coût computationnel des couches suivantes.

Le principe consiste à diviser l’image ou la carte de caractéristiques en fenêtres de taille fixe et à ne retenir que la valeur maximale de chaque fenêtre. Cette opération permet de réduire la taille spatiale des données, de rendre le réseau plus robuste aux variations locales et d’éviter le surapprentissage.

Les couches MaxPooling2D sont utilisées dans les architectures CNN pour la classification d’images, la détection d’objets et la segmentation. Elles sont souvent suivies de couches de convolution, de normalisation ou de fully connected.

En résumé, les couches MaxPooling2D permettent de réduire la dimensionnalité spatiale tout en conservant les caractéristiques les plus saillantes des images ou des cartes de caractéristiques.

Fonctions :

  • MaxPooling2D()

    MaxPooling2D est une couche de réduction de dimension qui applique une opération de max pooling sur une fenêtre 2D glissante. Elle est principalement utilisée après des couches convolutionnelles 2D pour réduire la hauteur et la largeur des images tout en conservant les caractéristiques les plus saillantes.

    Importation :

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
    import numpy as np

    Attributs :

    Paramètre Type Description Valeur par défaut
    pool_size int ou tuple Taille de la fenêtre de pooling (hauteur, largeur). (2, 2)
    strides int ou tuple Pas de déplacement de la fenêtre de pooling. None (équivalent à pool_size)
    padding str 'valid' (sans remplissage) ou 'same' (conserve la taille). 'valid'
    data_format str 'channels_last' (hauteur, largeur, canaux) ou 'channels_first' (canaux, hauteur, largeur). 'channels_last'

    Exemple de code :

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
    import numpy as np
    
    # Données simulées : 100 images 28x28 en niveaux de gris (1 canal)
    X = np.random.rand(100, 28, 28, 1)
    y = np.random.randint(0, 10, size=(100,))
    
    # Modèle simple avec MaxPooling2D
    model = Sequential()
    model.add(Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Flatten())
    model.add(Dense(10, activation='softmax'))
    
    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
    model.summary()
    Résultat du code

    Explication du code :

    Importation des bibliothèques
    On importe les couches nécessaires depuis TensorFlow Keras : `Conv2D`, `MaxPooling2D`, `Flatten`, et `Dense`.
    Création des données
    Les données simulées sont 100 images en niveaux de gris de taille 28×28 avec 1 canal. Les labels correspondent à 10 classes différentes.
    Définition du modèle
    La couche `Conv2D` extrait des caractéristiques spatiales des images, suivie d’une couche `MaxPooling2D` qui réduit la hauteur et la largeur en prenant la valeur maximale dans chaque fenêtre 2×2. `Flatten` transforme les sorties 2D en vecteur pour la couche finale dense.
    Compilation
    Le modèle est compilé pour un problème de classification multi-classes avec l’optimiseur Adam.

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

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

Souscrire maintenant