Pregled implementacije neuronskih mreža

Umjetne neuronske mreže nadahnute su biološkim neuronskim mrežama. Neuronske mreže pomažu u rješavanju problema bez programiranja pravila i uvjeta specifičnih za taj problem. Oni su generički modeli s većinom složenih matematičkih izračuna kao BlackBox. Različite vrste neuronskih mreža su poput konvolucijske neuronske mreže, ponavljajuće neuronske mreže, povratne neuronske mreže, višeslojnog perceptrona i mnogih drugih. U ovoj smo temi trebali saznati više o implementaciji neuronskih mreža.

Arhitektura neuronskih mreža

Postoje 3 sloja uglavnom u neuronskim mrežama.

  • Ulazni sloj
  • Skriveni slojevi
  • Izlazni sloj

1. Ulazni sloj: ulazni sloj sadrži neurone za unos značajki. Uz dodatak mogućnosti, na ulazni sloj dodaje se i jedna pristranost. Ako postoji n značajki, tada ulazni sloj sadrži n + 1 neurona.

2. Skriveni sloj: Skriveni slojevi su intermedijarni slojevi između ulaznog i izlaznog sloja. Sakriveni slojevi mogu biti bilo koji. Mreža s više skrivenih slojeva naziva se dubokim neuronskim mrežama. Neuroni u skrivenom sloju dobivaju ulaz iz sloja i daju izlaz izlaznom sloju.

3. Izlazni sloj: Izlazni sloj sadrži broj neurona na temelju broja izlaznih klasa. Ako je problem s klasifikacijom više klasa onda sadrži broj neurona jednak broju klasa. Za binarnu klasifikaciju sadrži jedan neuron.

Ulazi se množe s utezima, a zatim se dodaju u sljedeći skriveni sloj. Pristranost se također daje kao ulaz zajedno s uteženim ulazima. Ponderirani zbroj se prenosi nelinearnom funkcijom koja se naziva aktivirajuća funkcija.

Primjer provedbe

Slijedi primjer primjera implementacije

Instalacija knjižnica

Postoji mnogo ugrađenih knjižnica za implementaciju umjetnih neuronskih mreža na različitim programskim jezicima. Ovdje ćemo govoriti o dvije poznate knjižnice tensorflow i Keras koji koriste python kao programski jezik za implementaciju neuronskih mreža. Keras je api izgrađen na višoj razini na tensorflowu ili theanu kao podupirač. Mnogo je lakše provoditi. Možete odabrati bilo koju knjižnicu za svoj model. Dostupni su i neki drugi poput PyTorch, theano, Caffe i mnogi drugi.

Da biste instalirali tensorflow / Keras pomoću pip-a, pokrenite sljedeću naredbu:

pip install tensorflow
pip install Keras

A može se instalirati i pomoću naredbe conda,

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

izvršenje

Ovdje ćemo govoriti o Kerasu za generaciju modela dubokog učenja. To je knjižnica za duboko učenje Python otvorenog koda.

  • Uvoz dostupnih podataka MNIST. MNIST je skup rukom pisanih brojeva engleskih znamenki.

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)

  • Inicijalizirajte parametre i hiperparametre potrebne za model.
  • Zatim inicijalizirajte model dubokog učenja.

model = Sequential()

  • Za svaki sloj savijanja koji dodajemo između ulaznog i izlaznog sloja (skriveni slojevi) dodajte sloj savijanja, aktivacijski sloj i maks. Ovdje dodamo dva sloja savijanja.

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))

  • Prema problemu mogu se koristiti različite funkcije aktiviranja. Neke uobičajene funkcije aktivacije su relu aktivacija, tanh aktivacija puščana relu i mnoge druge.
  • Zatim dolazi potpuno povezani sloj prije gustog sloja. Oni kompiliraju podatke izvađene prethodnim slojevima kako bi tvorili konačni ishod.
  • Dimenzija izlaznog sloja ovisi o broju klasa. Funkcije aktivacije koje se koriste za izlazni sloj su uglavnom sigmoidne aktivacije za binarnu klasifikaciju i softmax aktivacije za razvrstavanje u više klasa.

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

Kompletni kod duboke konvolucijske neuronske mreže za klasifikaciju MNIST podataka nalazi se u nastavku.

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)))

Trening

Obuka modela izgleda kao,

Zaključak - Implementacija neuronskih mreža

Neuronske mreže pružaju jednostavan način za klasifikaciju ili regresijske probleme u strojnom učenju kada je prostor značajki uzoraka vrlo velik uglavnom za velike slike ili drugu multimediju ili signale.

Preporučeni članci

Ovo je vodič za implementaciju neuronskih mreža. Ovdje razgovaramo o arhitekturi i implementaciji Neural Networks s modelom treninga i primjerom koda. Možete pogledati i sljedeći članak da biste saznali više -

  1. Klasifikacija neuronske mreže
  2. Što su neuronske mreže?
  3. Konvolucionarne neuronske mreže
  4. Algoritmi neuronske mreže
  5. 2D grafika na Javi

Kategorija: