A neurális hálózatok megvalósításának áttekintése

A mesterséges ideghálókat a biológiai ideghálók inspirálják. A neurális hálózatok segítenek a problémák megoldásában anélkül, hogy beprogramoznák a probléma-specifikus szabályokat és feltételeket. Általános modellek, amelyekben a legtöbb bonyolult matematikai számítás található, mint BlackBox. Az ideghálózatok különféle típusai, például a Convolution Neural Network, a Recurrent Neural Network, a Feedforward neurális hálózat, a többrétegű perceptron és még sok más. Ebben a témában meg kell tanulnunk a neurális hálózatok megvalósításáról.

A neurális hálózatok építészete

Három réteg van elsősorban az idegi hálózatokban.

  • Bemeneti réteg
  • Rejtett rétegek
  • Kimeneti réteg

1. Bemeneti réteg: A bemeneti réteg a funkciók beviteléhez szükséges neuronokat tartalmazza. A szolgáltatások mellett a bemeneti réteghez egy torzítás is hozzáadódik. Tehát ha n jellemző van, akkor a bemeneti réteg n + 1 neuront tartalmaz.

2. Rejtett réteg: A rejtett rétegek a bemeneti és a kimeneti rétegek köztes rétegei. Tetszőleges számú rejtett réteg lehet. A egynél több rejtett réteggel rendelkező hálózatot mély neurális hálózatoknak nevezzük. A rejtett rétegben lévő neuronok a bemeneti rétegtől kapnak bemenetet, és outputot adnak a kimeneti réteghez.

3. Kimeneti réteg: A kimeneti réteg a kimeneti osztályok száma alapján tartalmazza a neuronok számát. Ha ez egy többosztályú osztályozási probléma, akkor az osztályok számával megegyező idegsejtek számát tartalmazza. A bináris osztályozáshoz egy neuront tartalmaz.

A bemeneteket megszorozzuk súlyokkal, majd betápláljuk a következő rejtett rétegbe. A torzítást bemeneti formában adják meg, a súlyozott bemenetekkel együtt. A súlyozott összeget egy nemlineáris függvényen továbbítják, az úgynevezett aktiválási függvényt.

Végrehajtási példa

Az alábbiakban említjük a megvalósítási példát

Könyvtárak telepítése

Számos beépített könyvtár létezik a mesterséges idegi hálózatok különböző programozási nyelveken történő megvalósításához. Itt két híres tensorflow és keras könyvtárról fogunk beszélni, amelyek python-ot használnak programozási nyelvként az ideghálózatok megvalósításához. A Keras egy magasabb szintű API, amely tensorflow-ra vagy theano-ra épül háttérként. Sokkal könnyebb végrehajtani. Bármelyik könyvtárat kiválaszthatja a modelljéhez. Vannak mások is, például PyTorch, theano, Caffe és még sok más.

A tensorflow / Keras telepítéséhez pip segítségével futtassa a következő parancsot:

pip install tensorflow
pip install Keras

Alternatív megoldásként a conda paranccsal telepíthető,

conda install -c conda-forge tensorflow
conda install -c conda-forge keras

Végrehajtás

Itt a Kerasről fogjuk beszélni a mélyreható tanulási modellek generálása érdekében. Ez egy nyílt forráskódú Python mély tanulási könyvtár.

  • Importálja a rendelkezésre álló MNIST adatkészletet. Az MNIST az angol számjegyek kézzel írott számjegyei.

from tensorflow.examples.tutorials.mnist import input_data
train_images = mnist.train.images.reshape(mnist.train.images.shape(0), image_rows, image_cols, 1)
test_images = mnist.test.images.reshape(mnist.test.images.shape(0), image_rows, image_cols, 1)

  • Inicializálja a modellhez szükséges paramétereket és hiperparamétereket.
  • Ezután inicializálja a mély tanulási modellt.

model = Sequential()

  • Adjunk hozzá konvolúciós réteget, aktivációs réteget és max-pooling réteget mindegyik konvolúciós réteghez, amelyet hozzáadunk a bemeneti és a kimeneti réteg (rejtett rétegek) közé. Itt két konvolúciós réteget adunk hozzá.

model.add(Convolution2D(num_filters, conv_kernel_size(0), conv_kernel_size(1), border_mode='valid', input_shape=imag_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=max_pool_size))

  • A problémára különféle aktiválási funkciókat lehet használni. Néhány általános aktiválási funkció a relu aktiválás, a tanh aktiválás szivárgó relu és még sokan mások.
  • Ezután egy teljesen összekapcsolt réteg jön a sűrű réteg előtt. Összeállítják az előző rétegek által kivont adatokat a végső output létrehozása céljából.
  • A kimeneti réteg mérete az osztályok számától függ. A kimeneti réteghez használt aktiválási funkciók általában a szigmoid aktiválás a bináris osztályozáshoz és a softmax aktiválás a többosztályú osztályozáshoz.

model.add(Dense(num_classes))
model.add(Activation('softmax'))

Az MNIST adatok osztályozására szolgáló mély konvolúciós neurális hálózat teljes kódja az alábbiak szerint történik.

from tensorflow.examples.tutorials.mnist import input_data
from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Convolution2D, MaxPooling2D
# we use TF helper function to pull down the data from the MNIST site mnist_data = input_data.read_data_sets("MNIST_data/", one_hot=True)
img_rows = 28
img_cols = 28
# Reshape training and test images to 28x28x1
train_images = mnist_data.train.images.reshape(mnist_data.train.images.shape(0), img_rows, img_cols, 1)
test_images = mnist_data.test.images.reshape(mnist_data.test.images.shape(0), img_rows, img_cols, 1)
num_of_filters = 32 # No. of conv filters maxPoolSize = (2, 2) # shape of max_pool convKrnSize = (3, 3) # conv kernel shape imgShape = (28, 28, 1) num_of_classes = 10
dropProb = 0.5
model = Sequential()
# define layers in NN
# Define 1st convolution layer.
model.add(Convolution2D(num_of_filters, convKrnSize(0), convKrnSize(1), border_mode='valid', input_shape=imgShape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=maxPoolSize))
# 2nd Convolution Layer
model.add(Convolution2D(num_of_filters, convKrnSize(0), convKrnSize(1))) model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=maxPoolSize))
#Fully Connected Layer model.add(Flatten())
model.add(Dense(128)) #Fully connected layer in Keras model.add(Activation('relu'))
# Dropout some neurons to reduce overfitting model.add(Dropout(dropProb))
#Readout Layer model.add(Dense(num_of_classes))
model.add(Activation('softmax'))
# Compile the model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=('accuracy'))
# Training settings batch_size = 128
num_of_epoch = 2
# fit the training data to the model.
model.fit(train_images, mnist_data.train.labels, batch_size=batch_size,
nb_epoch=num_of_epoch, verbose=1, validation_data=(test_images, mnist_data.test.labels))
# predict the test_data using the model
test_labels_predicted = model.predict_classes(test_images)
# To get the predicted labels of all test images for i in range(len(test_images)):
print ("Image () -> Label ()".format(i+1, test_labels_predicted(0)))

Kiképzés

A modell edzése néz ki,

Következtetés - Neurális hálózatok megvalósítása

A neurális hálózatok egyszerű módszert kínálnak a gépi tanulás során felmerülő osztályozási vagy regressziós problémákra, amikor a minták jellemzői nagyon nagyok, főleg nagy képek vagy más multimédia vagy jelek esetén.

Ajánlott cikkek

Ez egy útmutató a neurális hálózatok megvalósításához. Itt tárgyaljuk a neurális hálózatok architektúráját és megvalósítását egy képzési modellel és a mintakóddal. A következő cikkben további információkat is megnézhet -

  1. A neurális hálózat osztályozása
  2. Mi az idegháló?
  3. Konvolúciós neurális hálózatok
  4. Neurális hálózati algoritmusok
  5. 2D grafika Java-ban

Kategória: