Couche quadratique
Introduction
Dans ce tutoriel, nous allons définir une couche quadratique personnalisée dans TensorFlow. Cette couche effectuera une transformation quadratique sur ses entrées, de la forme
(ax^2 + bx + c), où (a), (b) et (c)
sont des paramètres apprenables. Nous allons ensuite utiliser cette couche dans un modèle de réseau de neurones pour le dataset MNIST.
Étape 1 : Importer les bibliothèques nécessaires
Étape 2 : Définir la classe de la couche quadratique personnalisée
Nous allons définir une classe SimpleQuadratic
qui hérite de la classe Layer
de TensorFlow Keras.
Explication :
__init__
: Le constructeur initialise la couche avec le nombre d’unités et la fonction d’activation. Il appelle le constructeur de la classe parenteLayer
avecsuper()
.units
: Le nombre d’unités dans la couche.activation
: La fonction d’activation à appliquer après la transformation quadratique. Nous utilisonstf.keras.activations.get()
pour obtenir l’objet de la fonction d’activation correspondant à la chaîne de caractères passée.
Étape 3 : Définir la méthode build
La méthode build
est appelée une seule fois, lors de la première utilisation de la couche. Elle initialise les poids (a), (b) et (c).
Explication :
a_init
etb_init
: Initialiseurs pour les poids(a) et (b)
, utilisant une distribution normale.a_init_val
etb_init_val
: Valeurs initiales pour(a) et (b)
, avec une forme compatible avec la multiplication matricielle.c_init
: Initialiseur pour le biais(c),
utilisant des zéros.c_init_val
: Valeur initiale pour(c)
, avec une forme de vecteur.self.a
,self.b
,self.c
: Variables TensorFlow trainables.
Étape 4 : Définir la méthode call
La méthode call
définit le calcul effectué par la couche. Elle applique la transformation quadratique et la fonction d’activation si elle est spécifiée.
Explication :
x_squared
: Carré des entrées.x_squared_times_a
: Multiplication matricielle entre (x^2) et (a).x_times_b
: Multiplication matricielle entre (x) et (b).x2a_plus_xb_plus_c
: Somme des trois termes.self.activation
: Application de la fonction d’activation si elle est spécifiée.
Étape 5 : Utiliser la couche quadratique dans un modèle
Nous allons maintenant utiliser notre couche quadratique personnalisée dans un modèle pour le dataset MNIST.
Explication :
mnist.load_data
: Charge les données MNIST.x_train
etx_test
: Normalisation des données (division par 255.0).model
: Définition du modèle séquentiel.Flatten
: Aplatit les images de 28x28 en vecteurs de 784 éléments.SimpleQuadratic
: Notre couche quadratique personnalisée avec 128 unités et une activation ReLU.Dropout
: Couche de dropout pour la régularisation.Dense
: Couche dense de sortie avec 10 unités (une pour chaque classe) et une activation softmax.
compile
: Compilation du modèle avec l’optimiseur Adam, la fonction de perte sparse_categorical_crossentropy et la métrique d’accuracy.fit
: Entraînement du modèle sur les données d’entraînement pendant 5 epochs.evaluate
: Évaluation du modèle sur les données de test.
Conclusion
Vous avez maintenant appris à définir une couche quadratique personnalisée dans TensorFlow et à l’utiliser dans un modèle de réseau de neurones pour le dataset MNIST. Cette approche vous permet de créer des couches personnalisées pour des transformations spécifiques et de les intégrer facilement dans vos modèles.