View TensorFlow.org Suorita Google Colab Näytä lähdekoodi GitHub Lataa notebook

Tämä opetusohjelma osoittaa, koulutuksen yksinkertainen Konvoluutio neuroverkko (CNN) luokitella CIFAR kuvia. Koska tämä opetusohjelma käyttää Keras peräkkäinen API, luominen ja koulutus mallimme kestää vain muutaman rivin koodia.,

Tuo TensorFlow

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

Lataa ja valmistella CIFAR10 aineisto

CIFAR10 aineisto sisältää 60000 väri kuvia 10-luokat, 6 000 kuvia kussakin luokassa. Aineisto on jaettu 50 000 harjoituskuvaan ja 10 000 testikuvaan. Luokat ovat toisensa poissulkevia, eikä niiden välillä ole päällekkäisyyksiä.

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

Tarkista, tiedot

varmista, että aineisto näyttää oikea, juoni ensimmäiset 25 kuvia koulutus asettaa ja näyttää luokan nimi alla jokaisen kuvan.,

Luo konvoluutio-pohja

6 riviä koodia alla määritellä konvoluutio-base käyttäen yhteistä mallia: pino Conv2D ja MaxPooling2D kerroksia.

syötteenä CNN ottaa tensorit muotoonsa (image_height, image_width, color_channels) eräkoosta piittaamatta. Jos olet uusi näissä ulottuvuuksissa, color_channels viittaa (R, G, B). Tässä esimerkissä, voit määrittää CNN prosessin panosten muoto (32, 32, 3), joka on muotoa CIFAR kuvia. Voit tehdä tämän siirtämällä argumentin input_shape ensimmäiselle kerroksellemme.,

näytetään mallimme arkkitehtuuri toistaiseksi.

model.summary()

Edellä, voit nähdä, että lähtö joka Conv2D ja MaxPooling2D kerros on 3D tensor muoto (korkeus, leveys, kanavat). Leveys-ja korkeusmittojen taipumus kutistua, kun menee syvemmälle verkkoon. Kunkin Conv2D-kerroksen ulostulokanavien määrää ohjataan ensimmäisellä argumentilla (esim.32 tai 64). Tyypillisesti, koska leveys ja korkeus kutistua, sinulla on varaa (laskennallisesti) lisätä ulostulokanavia kussakin Conv2D kerros.,

Lisää Tiheä kerrokset päälle

täydentää meidän malli, sinun tulee ruokkia viimeinen lähtö tensor päässä konvoluutio-pohja (muoto (4, 4, 64)) yhdeksi tai enemmän Tiheä kerrokset suorittaa luokitus. Tiheät kerrokset ottavat tulona vektoreita (jotka ovat 1D), kun taas nykyinen lähtö on 3D-tensori. Ensin, voit flatten (tai unroll) 3D-ulostulo 1D, sitten lisätä yhden tai useamman tiheän kerroksia päälle. CIFAR on 10 lähtö luokat, joten käytät lopullinen tiheä kerros 10 lähdöt.

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

tässä on mallimme täydellinen arkkitehtuuri.,

model.summary()

Kuten näette, meidän (4, 4, 64) tuotokset olivat litistetty osaksi vektorit muoto (1024) ennen kuin menee läpi kaksi paksua kerrosta.

Compile-ja juna-malli

Arvioi mallia

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

print(test_acc)