Couches de pooling (GlobalMaxPooling2D)

Les couches GlobalMaxPooling2D sont utilisées dans les réseaux de neurones convolutionnels pour réduire chaque carte de caractéristiques 2D à une seule valeur maximale. L’objectif est de transformer des représentations spatiales en vecteurs compacts, prêts à être utilisés par des couches fully connected ou pour la classification finale.

Le principe consiste à sélectionner la valeur maximale de chaque carte de caractéristiques 2D, générant ainsi un vecteur dont la taille correspond au nombre de cartes. Cette opération réduit la dimensionnalité tout en conservant les caractéristiques les plus saillantes de chaque carte.

Les couches GlobalMaxPooling2D sont utilisées dans les architectures CNN pour la classification d’images, la détection d’objets et la segmentation, en particulier dans les modèles profonds où la réduction des dimensions est nécessaire avant les couches fully connected.

En résumé, les couches GlobalMaxPooling2D permettent de transformer des cartes de caractéristiques 2D en vecteurs compacts tout en conservant les informations les plus significatives de chaque carte.

Fonctions :

  • GlobalMaxPooling2D()

    GlobalMaxPooling2D est une couche qui calcule la valeur maximale globale de chaque carte de caractéristiques 2D (canal) sur toute sa hauteur et sa largeur. Elle réduit chaque carte 2D en un seul nombre représentant le maximum, ce qui permet de compresser fortement la représentation tout en conservant les caractéristiques les plus saillantes. Cette couche est souvent utilisée en fin de réseau convolutionnel avant la classification.

    Importation :

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

    Attributs :

    Paramètre Type Description Valeur par défaut
    data_format str Format des données : 'channels_last' (hauteur, largeur, canaux) ou 'channels_first' (canaux, hauteur, largeur). 'channels_last'
    keepdims bool Si True, conserve les dimensions réduites avec une taille 1. False

    Exemple de code :

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Conv2D, GlobalMaxPooling2D, Dense
    import numpy as np
    
    # Données simulées : 15 images 28x28 avec 1 canal (niveau de gris)
    X = np.random.rand(15, 28, 28, 1)
    y = np.random.randint(0, 5, size=(15,))
    
    # Modèle simple avec GlobalMaxPooling2D
    model = Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
    model.add(GlobalMaxPooling2D())
    model.add(Dense(5, 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 de TensorFlow Keras : `Conv2D`, `GlobalMaxPooling2D` et `Dense`.
    Création des données
    Les données simulées représentent 15 images en niveaux de gris (1 canal) de taille 28×28 pixels. Les labels sont des classes entières pour une classification à 5 catégories.
    Définition du modèle
    La couche `Conv2D` extrait des caractéristiques locales sur les images. Ensuite, `GlobalMaxPooling2D` sélectionne la valeur maximale dans chaque carte de caractéristiques 2D, produisant un vecteur plat. Enfin, une couche dense réalise la classification.
    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