Tento kurz ukazuje, školení jednoduchý Konvoluční Neuronové Sítě (CNN) klasifikovat CIFAR obrázky. Protože tento tutoriál používá sekvenční API Keras, vytváření a školení našeho modelu bude trvat jen několik řádků kódu.,
Import TensorFlow
import tensorflow as tffrom tensorflow.keras import datasets, layers, modelsimport matplotlib.pyplot as plt
Stáhnout a připravit CIFAR10 datového souboru
CIFAR10 dataset obsahuje 60.000 barevné obrázky v 10 třídách, s 6000 snímků v každé třídě. Datový soubor je rozdělen na 50 000 tréninkových obrázků a 10 000 testovacích obrázků. Třídy se vzájemně vylučují a mezi nimi nedochází k překrývání.
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz170500096/170498071 - 11s 0us/step
Ověřte údaje
ověřte, že datový soubor vypadá v pořádku, ať je děj prvních 25 obrazů z trénovací množiny a zobrazení název třídy pod každým obrazem.,
Vytvořit konvoluční základna
6 řádků kódu níže definovat konvoluční základnu s použitím společného vzoru: stoh Conv2D a MaxPooling2D vrstev.
jako vstup, CNN bere tenzory tvaru (image_height, image_width, color_channels), ignoruje velikost šarže. Pokud jste v těchto rozměrech noví, color_channels odkazuje na (R, G, B). V tomto příkladu nakonfigurujete naši CNN tak, aby zpracovávala vstupy tvaru (32, 32, 3), což je formát obrázků CIFAR. Můžete to provést předáním argumentu input_shape
do naší první vrstvy.,
zobrazme zatím architekturu našeho modelu.
model.summary()
Výše, můžete vidět, že výstup každého Conv2D a MaxPooling2D vrstva je 3D tenzor tvar (výška, šířka, kanály). Rozměry šířky a výšky mají tendenci se zmenšovat, když jdete hlouběji do sítě. Počet výstupních kanálů pro každou Konv2d vrstvu je řízen prvním argumentem (např. 32 nebo 64). Typicky, jak se šířka a výška zmenšují, můžete si dovolit (výpočetně) přidat další výstupní kanály v každé Konv2d vrstvě.,
Přidat Husté vrstvy na vrcholu
dokončit náš model, budete krmit poslední výstup tenzor od konvoluční základny (tvar, (4, 4, 64)) do jedné nebo více Husté vrstvy provést klasifikaci. Husté vrstvy berou vektory jako vstup (které jsou 1D), zatímco proudový výstup je 3D tenzor. Nejprve vyrovnáte (nebo rozbalíte) 3D výstup na 1D a poté přidáte jednu nebo více hustých vrstev nahoře. CIFAR má 10 výstupních tříd, takže používáte konečnou hustou vrstvu s 10 výstupy.
model.add(layers.Flatten())model.add(layers.Dense(64, activation='relu'))model.add(layers.Dense(10))
zde je kompletní Architektura našeho modelu.,
model.summary()
Jak můžete vidět, naše (4, 4, 64) výstupy byly zploštělé do vektorů tvaru (1024), než jít přes dva Husté vrstvy.
Sestavit a trénovat model
Vyhodnotit model
313/313 - 1s - loss: 0.8840 - accuracy: 0.7157
print(test_acc)
Napsat komentář