TensorFlow.org fut a Google Colab Forrás megtekintése GitHub letöltés notebook

Ez a bemutató bemutatja a képzés egy egyszerű konvolúciós neurális hálózat (CNN) a cifar képek osztályozására. Mivel ez a bemutató a Keras szekvenciális API-t használja, a modell létrehozása és képzése csak néhány sornyi kódot igényel.,

Import TensorFlow

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

töltse le és készítse el a CIFAR10 adatkészletet

a CIFAR10 adatkészlet 60 000 színes képet tartalmaz 10 osztályban, mindegyik osztályban 6000 képpel. Az adathalmaz 50 000 képzési képre és 10 000 tesztelési képre oszlik. Az osztályok kölcsönösen kizárják egymást, és nincs átfedés közöttük.

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

ellenőrizze az adatokat

annak ellenőrzéséhez, hogy az adatkészlet helyesnek tűnik-e, ábrázoljuk az első 25 képet a képzési készletből, és jelenítsük meg az osztály nevét az egyes képek alatt.,

hozza létre a konvolúciós bázist

az alábbi 6 kódsor határozza meg a konvolúciós bázist egy közös mintával: egy köteg Conv2D és MaxPooling2D rétegből.

bemenetként a CNN tenzor alakú (image_height, image_width, color_channel), figyelmen kívül hagyva a kötegelt méretet. Ha még nem ismeri ezeket a méreteket, color_channel utal (R,G,B). Ebben a példában konfigurálja a CNN – t, hogy feldolgozza az alak bemeneteket (32, 32, 3), ami a CIFAR képek formátuma. Ezt úgy teheti meg, hogy az input_shape argumentumot átadja az első rétegünknek.,

jelenítsük meg modellünk architektúráját eddig.

model.summary()

fent látható, hogy a kimenet minden Conv2D és MaxPooling2D réteg egy 3D tenzor alakú (magasság, szélesség, csatornák). A szélesség és a magasság méretei általában zsugorodnak, ahogy mélyebbre megy a hálózatban. Az egyes Konv2d rétegek kimeneti csatornáinak számát az első argumentum vezérli (például 32 vagy 64). Általában, mint a szélesség és a magasság csökken, megengedheti magának (számításilag), hogy adjunk több kimeneti csatornák minden Conv2D réteg.,

adjon hozzá sűrű rétegeket a tetejére

modellünk befejezéséhez az utolsó kimeneti tenzort a konvolúciós alapból (4, 4, 64) egy vagy több sűrű rétegbe táplálja az osztályozás elvégzéséhez. A sűrű rétegek vektorokat vesznek bemenetként (amelyek 1D), míg az aktuális kimenet 3D tenzor. Először a 3D kimenetet 1D-re simítja (vagy kicsomagolja), majd egy vagy több sűrű réteget ad a tetejére. A CIFAR 10 kimeneti osztályokkal rendelkezik, így egy végső sűrű réteget használ 10 kimenettel.

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

itt van a modellünk teljes architektúrája.,

model.summary()

mint látható, a (4, 4, 64) kimenetek lapított Vektorok alakja (1024), mielőtt megy keresztül két sűrű réteg.

állítsa össze és képezze a

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

print(test_acc)