Couches de reshaping (Flatten)

Les couches Flatten sont utilisées dans les réseaux de neurones pour transformer des données multidimensionnelles en un vecteur unidimensionnel. L’objectif est de préparer les sorties des couches convolutionnelles ou autres représentations complexes pour les passer à des couches fully connected.

Le principe consiste à aplatir toutes les dimensions d’entrée (sauf le batch) en une seule dimension, créant ainsi un vecteur linéaire qui conserve l’ensemble des informations des cartes de caractéristiques ou des tenseurs d’entrée. Cette opération ne modifie pas les valeurs, mais change leur organisation pour les rendre compatibles avec les couches suivantes.

Les couches Flatten sont utilisées dans les architectures CNN et autres réseaux où il est nécessaire de connecter des représentations multidimensionnelles à des couches fully connected pour la classification ou la régression.

En résumé, les couches Flatten permettent de transformer des données multidimensionnelles en vecteurs unidimensionnels, facilitant le passage vers les couches fully connected du réseau.

Fonctions :

  • Flatten()

    La couche Flatten transforme un tenseur multidimensionnel en un vecteur 1D en aplatissant toutes les dimensions sauf la dimension batch. Elle est souvent utilisée avant une couche dense pour préparer les données après des couches convolutionnelles.

    Importation :

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Flatten
    import numpy as np

    Attributs :

    Paramètre Type Description Valeur par défaut
    data_format string Format des données, généralement "channels_last" ou "channels_first". Ce paramètre n’affecte pas la sortie de Flatten, mais peut être utile pour compatibilité. None

    Exemple de code :

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Flatten
    import numpy as np
    
    # Données simulées : batch de 1 image, 2x2 pixels, 3 canaux
    X = np.array([[[[1, 2, 3], [4, 5, 6]],
                   [[7, 8, 9], [10, 11, 12]]]])
    
    # Modèle avec Flatten
    model = Sequential()
    model.add(Flatten(input_shape=(2, 2, 3)))
    
    # Passage des données dans la couche
    output = model.predict(X)
    print(output.shape)  # Affiche (1, 12)
    print(output)
    Résultat du code

    Explication du code :

    Importation des bibliothèques
    On importe la couche `Flatten` et les modules nécessaires.
    Création des données
    Les données représentent un batch avec une image de taille 2x2 pixels et 3 canaux.
    Définition du modèle
    Le modèle contient uniquement la couche `Flatten` pour transformer la structure 2x2x3 en un vecteur plat.
    Exécution
    Le passage des données produit un vecteur 1D de longueur 12 (2×2×3), aplati pour chaque élément du batch.

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

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

Souscrire maintenant