View on TensorFlow.org exécuter dans Google Colab voir la source sur GitHub télécharger notebook

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)