Vizualizare pe TensorFlow.org Run în Google Colab View source pe GitHub Download notebook

Acest tutorial demonstrează formare un simplu Convoluțional Neural Network (CNN) a clasifica CIFAR imagini. Deoarece acest tutorial folosește API-ul secvențial Keras, crearea și instruirea modelului nostru va dura doar câteva linii de cod.,

Import TensorFlow

import tensorflow as tffrom tensorflow.keras import datasets, layers, modelsimport matplotlib.pyplot as plt

Descărcați și să se pregătească CIFAR10 set de date

CIFAR10 set de date conține 60.000 de imagini color în 10 clase, cu 6.000 de imagini în fiecare clasă. Setul de date este împărțit în 50.000 de imagini de instruire și 10.000 de imagini de testare. Clasele se exclud reciproc și nu există nicio suprapunere între ele.

Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz170500096/170498071 - 11s 0us/step

Verifica datele

Pentru a verifica dacă setul de date se pare corect, să complot primele 25 de imagini din setul de instruire și a afișa nume de clasă sub fiecare imagine.,

Crearea convoluțional de bază

6 linii de cod de mai jos definesc convoluțional de bază folosind un model comun: un teanc de Conv2D și MaxPooling2D straturi.

ca intrare, un CNN ia tensori de formă (image_height, image_width, color_channels), ignorând dimensiunea lotului. Dacă sunteți nou la aceste dimensiuni, color_channels se referă la (R,G,B). În acest exemplu, veți configura CNN-ul nostru pentru a procesa intrări de formă (32, 32, 3), care este formatul imaginilor CIFAR. Puteți face acest lucru trecând argumentul input_shape la primul nostru strat.,

să afișăm arhitectura modelului nostru până acum.

model.summary()

de mai Sus, puteți vedea că producția de fiecare Conv2D și MaxPooling2D strat este un 3D tensor de forma (înălțime, lățime, canale). Dimensiunile lățimii și înălțimii tind să se micșoreze pe măsură ce mergeți mai adânc în rețea. Numărul de canale de ieșire pentru fiecare strat Conv2D este controlat de primul argument (de exemplu, 32 sau 64). De obicei, pe măsură ce lățimea și înălțimea se micșorează, vă puteți permite (computațional) să adăugați mai multe canale de ieșire în fiecare strat Conv2D.,pentru a completa modelul nostru, veți alimenta ultimul tensor de ieșire din baza convoluțională (de formă (4, 4, 64)) într-unul sau mai multe straturi Dense pentru a efectua clasificarea. Straturile Dense iau vectori ca intrare (care sunt 1D), în timp ce ieșirea curentă este un tensor 3d. În primul rând, veți aplatiza (sau derula) ieșirea 3D la 1D, apoi adăugați unul sau mai multe straturi Dense deasupra. CIFAR are 10 clase de ieșire, deci utilizați un strat dens final cu 10 ieșiri.

model.add(layers.Flatten())model.add(layers.Dense(64, activation='relu'))model.add(layers.Dense(10))

Iată arhitectura completă a modelului nostru.,după cum puteți vedea, ieșirile noastre (4, 4, 64) au fost aplatizate în vectori de formă (1024) înainte de a trece prin două straturi Dense.

Compila și de tren model

Evalua modelul

313/313 - 1s - loss: 0.8840 - accuracy: 0.7157

print(test_acc)