Vis på TensorFlow.org Kjør i Google Colab Vis kilde på GitHub Last ned notebook

Denne opplæringen viser trening en enkel Convolutional Neural Network (CNN) for å klassifisere CIFAR bilder. Fordi denne opplæringen bruker Keras Sekvensiell API, opprette og trening vår modell vil bare ta noen få linjer med kode.,

Importer TensorFlow

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

Last ned og forberede CIFAR10 dataset

CIFAR10 datasettet inneholder 60,000 fargebilder i 10 klasser, med 6000 bilder i hver klasse. Datasettet er delt inn i 50,000 trening bilder og 10 000 testing bilder. Klassene er gjensidig utelukkende, og det er ingen overlapp mellom dem.

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

Kontroller at dataene

for Å bekrefte at datasettet ser riktig, la oss plotte de første 25 bilder fra treningen sett og vis klasse navn under hvert bilde.,

Opprette convolutional base

6 linjer med kode nedenfor definere convolutional base ved hjelp av et felles mønster: en stabel av Conv2D og MaxPooling2D lag.

Som input, en CNN tar tensors av formen (image_height, image_width, color_channels), ignorerer batch-størrelse. Hvis du er ny til disse dimensjonene, color_channels refererer til (R,G,B). I dette eksemplet, vil du konfigurere våre CNN til å behandle tilførsler av formen (32, 32, 3), som er det formatet CIFAR bilder. Du kan gjøre dette ved å sende argumentet input_shape til vår første lag.,

La oss vise arkitektur av våre modellen så langt.

model.summary()

Over kan du se at resultatet av hver Conv2D og MaxPooling2D laget er en 3D-tensoren av formen (høyde, bredde, tv). Bredde-og høyde-mål har en tendens til å krympe når du går dypere i nettverket. Antall output kanaler for hver Conv2D lag som er kontrollert av det første argumentet (f.eks., 32 eller 64). Vanligvis, som bredde og høyde krympe, kan du råd (beregninger) for å legge til mer utgang-tv i hver Conv2D lag.,

Legg til Tett lag på toppen

for Å fullføre vår modell, vil du mate den siste utgang tensoren fra convolutional base (av formen (4, 4, 64)) i ett eller flere Tett lag til å utføre klassifisering. Tett lag ta vektorer som input (som er 1D), mens dagens produksjon er en 3D-tensoren. Første, du vil flate (eller rulle) 3D-utgang til 1D, legg til en eller flere Tett lag på toppen. CIFAR har 10 utgang klasser, så du bruker en endelig Tett lag med 10 utganger.

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

Her er den komplette arkitektur av vår modell.,

model.summary()

Som du kan se, våre (4, 4, 64) utganger ble flatet inn vektorer av formen (1024) før du går gjennom to Tette lag.

Kompilere og tog modellen

Evaluere modellen

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

print(test_acc)