Panoramica sull'implementazione delle reti neurali

Le reti neurali artificiali sono ispirate alle reti neurali biologiche. Le reti neurali aiutano a risolvere i problemi senza essere programmati con le regole e le condizioni specifiche del problema. Sono modelli generici con la maggior parte dei complessi calcoli matematici come BlackBox. I diversi tipi di reti neurali sono come Convolution Neural Network, Recurrent Neural Network, Feedforward Neural Network, Multistrater perceptron e molti altri. In questo argomento, siamo venuti a conoscenza dell'implementazione delle reti neurali.

L'architettura delle reti neurali

Ci sono 3 strati principalmente nelle reti neurali.

  • Livello di input
  • Strati nascosti
  • Strato di uscita

1. Livello di input: il livello di input contiene i neuroni per l'input di funzionalità. C'è anche un bias aggiunto al livello di input oltre alle funzionalità. Quindi, se ci sono n caratteristiche, il livello di input contiene n + 1 neuroni.

2. Livello nascosto: i livelli nascosti sono i livelli intermedi tra i livelli di input e output. Può esserci un numero qualsiasi di livelli nascosti. La rete con più di uno strato nascosto si chiama reti neurali profonde. I neuroni nel livello nascosto ottengono input dal livello input e danno output al livello output.

3. Livello di output: il livello di output contiene il numero di neuroni in base al numero di classi di output. Se si tratta di un problema di classificazione multi-classe, allora contiene il numero di neuroni pari al numero di classi. Per la classificazione binaria, contiene un neurone.

Gli input vengono moltiplicati per i pesi e quindi immessi nel successivo livello nascosto. La distorsione viene inoltre fornita come input insieme a input ponderati. La somma ponderata viene passata attraverso una funzione non lineare chiamata funzione di attivazione.

Esempio di implementazione

Ecco l'esempio di implementazione menzionato di seguito

Installazione delle biblioteche

Esistono molte librerie integrate per l'implementazione di reti neurali artificiali in diversi linguaggi di programmazione. Qui parleremo di due delle famose librerie tensorflow e Keras che usano python come linguaggio di programmazione per l'implementazione di reti neurali. Keras è un'API di livello superiore costruita su tensorflow o theano come backend. È molto più semplice per l'implementazione. Puoi scegliere una delle librerie per il tuo modello. Ce ne sono anche altri disponibili come PyTorch, theano, Caffe e molti altri.

Per installare tensorflow / Keras usando pip, eseguire il comando seguente:

pip install tensorflow
pip install Keras

In alternativa, può essere installato utilizzando il comando conda,

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

Implementazione

Qui parleremo di Keras per la generazione dei modelli di apprendimento profondo. È una libreria di deep learning Python open source.

  • Importa il set di dati MNIST disponibile. MNIST è il set di dati di numeri scritti a mano di cifre inglesi.

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)

  • Inizializza i parametri e gli iperparametri necessari per il modello.
  • Quindi inizializzare il modello di apprendimento profondo.

model = Sequential()

  • Aggiungi il livello di convoluzione, il livello di attivazione e il livello di pool massimo per ciascuno dei livelli di convoluzione che stiamo aggiungendo tra il livello di input e di output (livelli nascosti). Qui stiamo aggiungendo due livelli di convoluzione.

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

  • Diverse funzioni di attivazione possono essere utilizzate in base al problema. Alcune funzioni di attivazione comuni sono l'attivazione relu, l'attivazione tanh relu leaky e molte altre.
  • Quindi arriva uno strato completamente collegato prima dello strato denso. Compilano i dati estratti dai livelli precedenti per formare l'output finale.
  • La dimensione del livello di output dipende dal numero di classi. Le funzioni di attivazione utilizzate per il layer di output sono generalmente l'attivazione sigmoid per la classificazione binaria e l'attivazione softmax per la classificazione multi-classe.

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

Il codice completo per la rete neurale convoluzionale profonda per la classificazione dei dati MNIST è il seguente.

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

Formazione

La formazione del modello sembra,

Conclusione - Implementazione di reti neurali

Le reti neurali forniscono un modo semplice per problemi di classificazione o regressione nell'apprendimento automatico quando lo spazio delle caratteristiche dei campioni è molto ampio principalmente per immagini di grandi dimensioni o altri contenuti multimediali o segnali.

Articoli consigliati

Questa è una guida all'implementazione delle reti neurali. Qui discutiamo l'architettura e l'implementazione delle reti neurali con un modello di formazione e un codice di esempio. Puoi anche leggere il seguente articolo per saperne di più -

  1. Classificazione della rete neurale
  2. Che cosa sono le reti neurali?
  3. Reti neurali convoluzionali
  4. Algoritmi di rete neurale
  5. Grafica 2D in Java

Categoria: