Prezentare generală a implementării rețelelor neuronale

Rețelele neuronale artificiale sunt inspirate de rețelele neuronale biologice. Rețelele neuronale ajută la rezolvarea problemelor fără a fi programate cu regulile și condițiile specifice problemei. Sunt modele generice cu cele mai multe calcule matematice complexe precum BlackBox. Diferitele tipuri de rețele neuronale sunt: ​​Revoluția Neurală Convoluție, Rețeaua Neurală Recurentă, Rețeaua Neurală Feedforward, Perceptronul Multistrat și multe altele. În acest subiect, suntem interesați să aflăm despre implementarea rețelelor neuronale.

Arhitectura rețelelor neuronale

Există 3 straturi în principal în rețelele neuronale.

  • Strat de intrare
  • Straturi ascunse
  • Strat de ieșire

1. Strat de intrare: Stratul de intrare conține neuronii pentru introducerea caracteristicilor. În plus față de caracteristici, este adăugat un prejudecat la stratul de intrare. Deci, dacă există n caracteristici, atunci stratul de intrare conține n + 1 neuroni.

2. Strat ascuns: Straturile ascunse sunt straturile intermediare dintre straturile de intrare și ieșire. Poate fi orice număr de straturi ascunse. Rețeaua cu mai mult de un strat ascuns se numește rețele neuronale profunde. Neuronii din stratul ascuns primesc aport din stratul de intrare și dau ieșire stratului de ieșire.

3. Strat de ieșire: Stratul de ieșire conține numărul de neuroni bazat pe numărul de clase de ieșire. Dacă este o problemă de clasificare cu mai multe clase, atunci conține numărul de neuroni egal cu numărul de clase. Pentru clasificarea binară, conține un neuron.

Intrările sunt înmulțite cu greutăți și apoi introduse în următorul strat ascuns. Pregătirea este, de asemenea, dată ca intrare împreună cu intrări ponderate. Suma ponderată este trecută printr-o funcție neliniară numită funcție de activare.

Exemplu de implementare

Iată exemplul de implementare menționat mai jos

Instalarea bibliotecilor

Există multe biblioteci încorporate pentru implementarea rețelelor neuronale artificiale în diferite limbaje de programare. Aici vom vorbi despre două dintre celebrele biblioteci tensorflow și Keras care folosesc python ca limbaj de programare pentru implementarea rețelelor neuronale. Keras este un api de nivel superior construit pe tensiuneflux sau teano ca backend. Este mult mai ușor de implementat. Puteți alege oricare dintre bibliotecile pentru modelul dvs. Există și alte altele disponibile, cum ar fi PyTorch, Theano, Caffe și multe altele.

Pentru a instala tensiunea / Keras folosind pip, executați următoarea comandă:

pip install tensorflow
pip install Keras

Alternativ, poate fi instalat folosind comanda conda,

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

Punerea în aplicare

Aici vom vorbi despre Keras pentru generarea de modele de învățare profundă. Este o bibliotecă de învățare profundă Python cu sursă deschisă.

  • Importați setul de date MNIST disponibil. MNIST este setul de date al numerelor scrise manual de cifre engleze.

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)

  • Inițializați parametrii și hiperparametrele necesare modelului.
  • Apoi inițializează modelul de învățare profundă.

model = Sequential()

  • Adăugați strat de convoluție, strat de activare și strat de colectare maximă pentru fiecare strat de convoluție pe care îl adăugăm între stratul de intrare și ieșire (straturi ascunse). Aici adăugăm două straturi de convoluție.

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

  • Funcția de activare diferită poate fi utilizată conform problemei. Unele funcții comune de activare sunt activarea relu, activarea tanh-ului, scurger relu și multe altele.
  • Apoi vine un strat complet conectat înainte de stratul dens. Acestea compun datele extrase de straturile anterioare pentru a forma rezultatul final.
  • Dimensiunea stratului de ieșire depinde de numărul de clase. Funcțiile de activare utilizate pentru stratul de ieșire sunt, în general, activarea sigmoidă pentru clasificarea binară și activarea softmax pentru clasificarea cu mai multe clase.

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

Codul complet pentru rețeaua neuronală profundă convoluțională pentru clasificarea datelor MNIST este cel de mai jos.

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

Instruire

Formarea modelului arată,

Concluzie - Implementarea rețelelor neuronale

Rețelele neuronale oferă o modalitate ușoară de clasificare sau de probleme de regresie în învățarea mașinii atunci când spațiul caracteristic al eșantioanelor este foarte mare în principal pentru imagini mari sau alte materiale multimedia sau semnale.

Articole recomandate

Acesta este un ghid pentru implementarea rețelelor neuronale. Aici discutăm arhitectura și implementarea rețelelor neuronale cu un model de instruire și un cod de eșantion. De asemenea, puteți consulta articolul următor pentru a afla mai multe -

  1. Clasificarea rețelei neuronale
  2. Ce este rețelele neuronale?
  3. Rețele neuronale convoluționale
  4. Algoritmi de rețea neuronală
  5. Grafica 2D în Java

Categorie: