Преглед примене неуронских мрежа

Вештачке неуронске мреже инспирисане су биолошким неуронским мрежама. Неуронске мреже помажу у решавању проблема без да се програмирају према правилима и условима специфичним за проблем. Они су генерички модели са већином сложених математичких рачунања као БлацкБок. Различите врсте неуронских мрежа су попут Цонволуциона неуронска мрежа, понављајућа неуронска мрежа, повратна неуронска мрежа, вишеслојни перцептрон и многи други. У овој теми морамо сазнати више о примени неуронских мрежа.

Архитектура неуронских мрежа

Постоје 3 слоја углавном у неуронским мрежама.

  • Улазни слој
  • Скривени слојеви
  • Излазни слој

1. Улазни слој: Улазни слој садржи неуроне за унос функција. Такође је додата једна пристраност улазном слоју поред функција. Ако постоји н карактеристика, улазни слој садржи н + 1 неурона.

2. Скривени слој: Скривени слојеви су интермедијарни слојеви између улазног и излазног слоја. Сакривени слојеви могу бити било који. Мрежа са више скривених слојева назива се дубоким неуронским мрежама. Неурони у скривеном слоју добијају улазни слој и дају излазни излазни слој.

3. Излазни слој: Излазни слој садржи број неурона на основу броја излазних класа. Ако је проблем класификације више класа онда садржи број неурона једнак броју класа. За бинарну класификацију садржи један неурон.

Улази се множе с утезима, а затим се додају у следећи скривени слој. Пристраност се такође даје као улаз заједно са утеженим улазима. Пондерисана сума преноси се преко нелинеарне функције која се назива функција активирања.

Пример примене

Ево примјера за имплементацију који се спомиње у наставку

Инсталација библиотека

Постоји много уграђених библиотека за имплементацију вештачких неуронских мрежа на различитим програмским језицима. Овде ћемо говорити о две познате библиотеке тенсорфлов и Керас који користе питхон као програмски језик за имплементацију неуронских мрежа. Керас је апи градња вишег нивоа на тенсорфлов-у или тхеано-у као подупирач. Много је лакша за имплементацију. Можете одабрати било коју од библиотека за свој модел. Постоје и неки други доступни попут ПиТорцх, тхеано, Цаффе и многи други.

Да бисте инсталирали тенсорфлов / Керас помоћу пип-а, покрените следећу наредбу:

pip install tensorflow
pip install Keras

Алтернативно, може се инсталирати помоћу цонда команде,

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

Имплементација

Овде ћемо говорити о Керасу за генерацију модела дубоког учења. То је библиотека за дубоко учење Питхон отвореног кода.

  • Увоз доступних података МНИСТ. МНИСТ је скуп руком написаних бројева енглеских цифара.

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)

  • Иницијализирајте параметре и хиперпараметре потребне за модел.
  • Затим иницијализирајте модел дубоког учења.

model = Sequential()

  • Додајте слој савијања, активацијски слој и слој мак обједињавања за сваки слој савијања који додајемо између улазног и излазног слоја (скривени слојеви). Овде додамо два слоја савијања.

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

  • Према проблему могу се користити различите функције активирања. Неке уобичајене функције активације су релу активација, танх активација пушчане релу и многе друге.
  • Затим долази потпуно повезани слој пре густог слоја. Они компилирају податке извучене претходним слојевима како би формирали коначни излаз.
  • Димензија излазног слоја зависи од броја класа. Функције активирања које се користе за излазни слој су углавном сигмоидне активације за бинарну класификацију и софтмак активације за класификацију у више класа.

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

Комплетан код дубоке конволуционарне неуронске мреже за класификацију података МНИСТ је доле наведен.

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

обука

Обука модела изгледа као,

Закључак - Примена неуронских мрежа

Неуронске мреже пружају једноставан начин за класификацију или регресијске проблеме у машинском учењу када је простор карактеристика узорака врло велик углавном за велике слике или другу мултимедију или сигнале.

Препоручени чланци

Ово је водич за имплементацију неуронских мрежа. Овдје разговарамо о архитектури и имплементацији Неурал Нетворкс с моделом тренинга и примјером кода. Такође можете погледати следећи чланак да бисте сазнали више -

  1. Класификација неуронске мреже
  2. Шта су неуронске мреже?
  3. Конволуционарне неуронске мреже
  4. Алгоритми неуронске мреже
  5. 2Д графика на Јави

Категорија: