Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

A neurális hálózatok fontos fogalmak a mesterséges intelligencia és a gépi tanulás területén. Összekapcsolt csomópontokból állnak, rétegekbe rendezve, és utánozzák az emberi agy működését. A csomópontok az emberi agy neuronjait képviselik.

Létrehozhatja saját egyszerű előrecsatolt, több osztályú osztályozású neurális hálózatát. Tanítsa meg a kézzel írt számjegyek osztályozására az MNIST adatkészlet segítségével. Ezután a számítógépes látás segítségével osztályozhatja saját kézzel írt számjegyeit.

Mi az a többosztályos osztályozás?

A többosztályos osztályozás a gépi tanulás egyik fajtája, amely több mint két kategóriába sorolhatja az adatokat. A neurális hálózatok a softmax osztályozót használják a valószínűségek lehetséges osztályok közötti elosztására.

Többosztályos besorolást használhat az MNIST-adatkészletből származó kézzel írott képek 10 kategóriába sorolásához. Ezek a kategóriák a 0-tól 9-ig terjedő számjegyeknek felelnek meg.

instagram viewer

Az MNIST adatkészlet megértése

Az MNIST adatkészlet egy népszerű benchmark adatkészlet a gépi tanuláshoz és a számítógépes látási algoritmusokhoz. 70 000 szürkeárnyalatos kézzel írott képet tartalmaz, amelyek mérete 28 x 28 pixel. A kézzel írt számjegyek 0 és 9 között vannak.

Mielőtt bármilyen gépi tanulási modellt készítene, fontos megértenie, mit tartalmaz az adatkészlet. Az adatkészlet megértése lehetővé teszi az adatok jobb előfeldolgozását.

A környezet előkészítése

Az oktatóanyag követéséhez ismernie kell a Python alapjai. Önnek is kellene a gépi tanulás alapismeretei. Végül kényelmesen használhatja a Jupyter Notebookot vagy a Google Colabot.

A teljes forráskód elérhető a GitHub adattár.

Hozzon létre egy új Jupyter Notebookot, vagy jelentkezzen be Google Colab. Futtassa ezt a parancsot a szükséges csomagok telepítéséhez:

!pip install numpy matplotlib tensorflow opencv-python

A következőket fogja használni:

  • Matplotlib az adatok megjelenítéséhez.
  • NumPy a tömbök kezeléséhez.
  • TensorFlow a modell létrehozásához és betanításához.
  • OpenCV, hogy saját kézzel írt számjegyekkel táplálja a modellt.

A szükséges modulok importálása

Importálja a környezetébe telepített csomagokat. Ez lehetővé teszi későbbi hívását, és a kódjában szereplő funkciók és modulok használatát.

import tenzoráramlás mint tf
tól től tenzoráramlás import keras
import matplotlib.pyplot mint plt
%matplotlib inline
import zsibbadt mint np
import cv2

A második kódsor importálja a Keras modult a Google TensorFlow könyvtár. A Keras segítségével taníthatja mély neurális hálózatát a TensorFlow háttérrendszerrel.

Az adatkészlet betöltése és megtekintése

Az MNIST adatkészlet a Kerasba van beépítve. Töltse be az MNIST adatkészletet, és ossza fel képzési és tesztkészletekre. Az oktatókészletet a modell betanításához, a tesztkészletet pedig a modell pontosságának értékeléséhez használja az új, nem látott képek osztályozásában.

(X_train, y_train), (X_teszt, y_teszt) = keras.datasets.mnist.load_data()

Ellenőrizze a képzési és tesztsorozatok hosszát. Az MNIST adatkészlet 60 000 képpel rendelkezik a képzéshez és 10 000 képhez a teszteléshez.

len (X_train)
len (X_teszt)

Ellenőrizze az MNIST-adatkészlet első képének alakját, amelynek 28 x 28 képpont méretűnek kell lennie. Ezután nyomtassa ki a pixelértékeit, és jelenítse meg a Matplotlib segítségével.

X_train[0].alak
X_train[0]
plt.matshow (X_train[0])
y_train[0]

A vizualizáció kimenete a következő:

A megjelenített kép azt mutatja, hogy az adatkészlet első képe az ötös számot tartalmazza.

Adatok előfeldolgozása

Mielőtt az adatkészletben lévő adatokat felhasználná a modell betanításához és teszteléséhez, elő kell feldolgoznia azokat. Az előfeldolgozás az adatok szabványosításával növeli a modell pontosságát.

A pixelértékek normalizálása

Normalizálja az adatkészletben lévő képek képpontértékeit úgy, hogy minden értéket eloszt 255-tel. A nem normalizált adatkészlet pixelértékei 0 és 255 között vannak, ahol a nulla fekete, a 255 pedig fehér. Az egyes pixelértékek 255-tel való elosztása biztosítja, hogy minden képpont 0 és 1 közötti tartományban legyen. Ez megkönnyíti a modell számára, hogy megtanulja az adatok releváns jellemzőit és mintáit.

X_train = X_train / 255
X_teszt = X_teszt / 255

Ezután nyomtassa ki az első kép pixelértékeit.

X_train[0]

Figyelje meg, hogy ezek most a 0 és 1 közötti tartományban vannak.

Képmátrixok átalakítása 1D tömbbé

A neurális hálózat bemeneti rétege általában 1D bemeneteket vár, ezért hozzon létre egy 1D tömböt a kép pixelértékeiből. Ehhez használja a reshape() függvényt úgy, hogy a nyersanyagok számát az adatkészletben lévő képek számára állítsa be.

X_train_flattened = X_train.reshape (len (X_train), 28 * 28)
X_test_flattened = X_test.reshape (len (X_test), 28 * 28)
X_train_flatened.shape
X_train_flattened[0]

Képei készen állnak a modell betanítására és tesztelésére.

A Deep Neural Network Model létrehozása

Hozzon létre egy szekvenciális modellt a Tensorflow Keras moduljával egy bemeneti réteg, két rejtett réteg és egy kimeneti réteg használatával. Állítsa a bemeneti alakzatot 28x28-ra, mivel ez az adatkészletben lévő eredeti képek alakja. Használjon 128 csomópontot a rejtett rétegekhez. A kimeneti rétegnek csak 10 neuronnak kell lennie, mivel csak a 0-tól 9-ig terjedő számjegyeket osztályozza.

modell = keras. Egymás utáni([
keras.rétegek. Lapítás (input_shape=(28, 28)),

keras.rétegek. Sűrű(128, aktiválás='relu'),
keras.rétegek. Sűrű(128, aktiválás='relu'),

keras.rétegek. Sűrű(10, aktiválás="softmax")
])

Állítsa össze a modellt a Ádám optimalizáló, ritka_kategorikus_kereszttrópia mint a veszteségfüggvény, és a mérőszám a modell teljesítményének értékeléséhez pontosság. Ezután illessze be a betanítási adatokat a modellbe, és állítsa be az epochák számát ötre.

model.compile (optimalizáló='Ádám',
veszteség='sparse_categorical_crossentropy',
metrikák=['pontosság'])

model.fit (X_train, y_train, epochs=5)

A modell betanítása néhány percet vesz igénybe. A modell betanítása után értékelje a teljesítményét a tesztkészleten.

model.evaluate (X_teszt, y_teszt)

Az értékelő függvény visszaadja a modell veszteségét és pontosságát. A modell 98%-os pontosságot produkál.

A modell használata saját kézzel írt számjegyeinek osztályozására

A saját kézzel írt számjegyeinek osztályozásához elő kell készítenie a képeket, hogy megfeleljenek az MNIST adatkészletének. Ennek elmulasztása esetén a modell gyengén fog teljesíteni.

A képek előfeldolgozása:

  1. Töltse be a számjegyet tartalmazó képet az OpenCV segítségével.
  2. Alakítsa át szürkeárnyalatossá, és méretezze át 28 x 28 pixelre.
  3. Fordítsa meg és normalizálja a pixelértékeket.
  4. Végül lapítsa ki a képet egy 1D tömbbe.

Adja át az előre feldolgozott képet a modellnek az előrejelzéshez, és nyomtassa ki az előrejelzett értéket a képernyőn.

img = cv2.imread('digits/digit1.png', cv2.IMREAD_GRAYSCALE)
img_resize = cv2.resize (img, (28, 28))
img_flip = cv2.bitwise_not (img_resize)
img_normalized = img_flip.astype('float32') / 255.0

# Lapítsa ki a képet 1D tömbbe
input_data = img_normalized.flatten().reshape( 1,28,28)

# Készítsen előrejelzést a modell segítségével
előrejelzés = model.predict (input_data)
nyomtatás (f' Jóslat: {np.argmax (előrejelzés)}')

Számot tartalmazó, előre feldolgozott kép átadása a modellnek.

A modell kimenete a következő:

A modell képes volt helyesen besorolni a hetes számjegyet.

Neurális hálózatok a chatbotokban

A neurális hálózatok használata robbanásszerűen terjedt az elmúlt néhány évben. Főleg természetes nyelvi feldolgozásban használták nyelvi fordításhoz és generatív mesterséges intelligenciához.

A közelmúltban megnőtt azoknak a chatbotoknak a száma, amelyek emberhez hasonló módon tudnak kommunikálni. Egyfajta neurális hálózatot használnak, amelyet transzformátor neurális hálózatnak neveznek. Lépjen kapcsolatba néhányukkal, és tapasztalja meg a neurális hálózatok erejét.