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 npAttributs :
Paramètre Type Description Valeur par défaut data_formatstr Format des données : 'channels_last'(hauteur, largeur, canaux) ou'channels_first'(canaux, hauteur, largeur).'channels_last'keepdimsbool Si True, conserve les dimensions réduites avec une taille 1.FalseExemple 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()
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.