ce tutoriel montre la formation d’un simple réseau de neurones convolutifs (CNN) pour classer les images cifar. Parce que ce tutoriel utilise L’API séquentielle Keras, la création et la formation de notre modèle ne prendra que quelques lignes de code.,
Import TensorFlow
import tensorflow as tffrom tensorflow.keras import datasets, layers, modelsimport matplotlib.pyplot as plt
Téléchargez et préparez le jeu de données CIFAR10
Le jeu de données CIFAR10 contient 60 000 images couleur dans 10 classes, avec 6 000 images dans chaque classe. L’ensemble de données est divisé en 50 000 images de formation et 10 000 images de test. Les catégories sont mutuellement exclusives et il n’y a pas de chevauchement entre eux.
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz170500096/170498071 - 11s 0us/step
vérifier les données
pour vérifier que l’ensemble de données semble correct, tracons les 25 premières images de l’ensemble de formation et affichons le nom de la classe sous chaque image.,
créer la base convolutive
Les 6 lignes de code ci-dessous définissent la base convolutive en utilisant un modèle commun: une pile de couches Conv2D et MaxPooling2D.
en entrée, un CNN prend des tenseurs de forme (image_height, image_width, color_channels), ignorant la taille du lot. Si vous êtes nouveau dans ces dimensions, color_channels fait référence à (R,G,B). Dans cet exemple, vous configurerez notre CNN pour traiter les entrées de forme (32, 32, 3), qui est le format des images CIFAR. Vous pouvez le faire en passant l’argument input_shape
pour notre première couche.,
affichons l’architecture de notre modèle jusqu’à présent.
model.summary()
ci-dessus, vous pouvez voir que la sortie de chaque couche Conv2D et MaxPooling2D est un tenseur 3D de forme (Hauteur, Largeur, canaux). Les dimensions en largeur et en hauteur ont tendance à diminuer à mesure que vous approfondissez le réseau. Le nombre de canaux de sortie pour chaque couche Conv2D est contrôlé par le premier argument (par exemple, 32 ou 64). En règle générale, à mesure que la largeur et la hauteur diminuent, vous pouvez vous permettre (en calcul) d’ajouter plus de canaux de sortie dans chaque couche Conv2D.,
ajouter des couches denses sur le dessus
pour compléter notre modèle, vous allez alimenter le dernier tenseur de sortie de la base convolutive (de forme (4, 4, 64)) en une ou plusieurs couches denses pour effectuer la classification. Les couches denses prennent des vecteurs en entrée (qui sont 1D), tandis que la sortie actuelle est un tenseur 3D. Tout d’abord, vous allez aplatir (ou dérouler) la sortie 3D en 1D, puis Ajouter une ou plusieurs couches denses sur le dessus. CIFAR a 10 classes de sortie, vous utilisez donc une couche Dense finale avec 10 sorties.
model.add(layers.Flatten())model.add(layers.Dense(64, activation='relu'))model.add(layers.Dense(10))
Voici l’architecture complète de notre modèle.,
model.summary()
comme vous pouvez le voir, nos sorties (4, 4, 64) ont été aplaties en Vecteurs de forme (1024) avant de passer par deux couches denses.
Compiler et tester le modèle
Évaluer le modèle
313/313 - 1s - loss: 0.8840 - accuracy: 0.7157
print(test_acc)
Laisser un commentaire