Überblick über die Implementierung neuronaler Netze

Künstliche Neuronale Netze sind von biologischen Neuronalen Netzen inspiriert. Neuronale Netze helfen, die Probleme zu lösen, ohne mit den problemspezifischen Regeln und Bedingungen programmiert zu sein. Sie sind generische Modelle mit den meisten komplexen mathematischen Berechnungen wie BlackBox. Die verschiedenen Arten von neuronalen Netzen sind Faltungs-Neuronales Netz, Wiederkehrendes Neuronales Netz, Vorwärtskopplungs-Neuronales Netz, Mehrschicht-Perzeptron und viele andere. In diesem Thema möchten wir etwas über die Implementierung neuronaler Netze lernen.

Die Architektur neuronaler Netze

Es gibt 3 Schichten, hauptsächlich in neuronalen Netzen.

  • Eingabeebene
  • Versteckte Ebenen
  • Ausgabeebene

1. Eingabeebene : Die Eingabeebene enthält die Neuronen für die Eingabe von Features. Zusätzlich zu den Merkmalen wird der Eingabeebene eine Verzerrung hinzugefügt. Wenn es also n Features gibt, enthält die Eingabeebene n + 1 Neuronen.

2. Versteckte Ebene: Die versteckten Ebenen sind die Zwischenebenen zwischen der Eingabe- und der Ausgabeebene. Es können beliebig viele ausgeblendete Ebenen vorhanden sein. Das Netzwerk mit mehr als einer verborgenen Schicht wird als tiefe neuronale Netzwerke bezeichnet. Die Neuronen in der verborgenen Schicht erhalten Eingaben von der Eingabeebene und geben Ausgaben an die Ausgabeebene.

3. Ausgabeschicht: Die Ausgabeschicht enthält die Anzahl der Neuronen basierend auf der Anzahl der Ausgabeklassen. Wenn es sich um ein Klassifizierungsproblem mit mehreren Klassen handelt, enthält es die Anzahl der Neuronen, die der Anzahl der Klassen entspricht. Für die binäre Klassifizierung enthält es ein Neuron.

Die Eingaben werden mit Gewichten multipliziert und dann in die nächste verborgene Ebene eingespeist. Bias wird zusammen mit gewichteten Eingaben auch als Eingabe angegeben. Die gewichtete Summe wird durch eine nichtlineare Funktion geleitet, die Aktivierungsfunktion genannt wird.

Implementierungsbeispiel

Hier ist das unten erwähnte Implementierungsbeispiel

Installation der Bibliotheken

Es gibt viele eingebaute Bibliotheken für die Implementierung künstlicher neuronaler Netze in verschiedenen Programmiersprachen. Hier werden wir über zwei der berühmten Bibliotheken Tensorflow und Keras sprechen, die Python als Programmiersprache für die Implementierung neuronaler Netze verwenden. Keras ist eine übergeordnete API, die auf Tensorflow oder Theano als Backend aufbaut. Es ist viel einfacher für die Implementierung. Sie können eine beliebige Bibliothek für Ihr Modell auswählen. Es gibt auch einige andere wie PyTorch, Theano, Caffe und viele mehr.

Führen Sie den folgenden Befehl aus, um den Tensorflow / Keras mit pip zu installieren:

pip install tensorflow
pip install Keras

Alternativ kann es mit dem Befehl conda installiert werden.

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

Implementierung

Hier werden wir über Keras für die Erzeugung der Deep-Learning-Modelle sprechen. Es ist eine Open-Source-Python Deep Learning-Bibliothek.

  • Importieren Sie das verfügbare MNIST-Dataset. MNIST ist der Datensatz handgeschriebener englischer Ziffern.

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)

  • Initialisieren Sie die für das Modell erforderlichen Parameter und Hyperparameter.
  • Initialisieren Sie dann das Deep Learning-Modell.

model = Sequential()

  • Fügen Sie Faltungsschicht, Aktivierungsschicht und Max-Pooling-Schicht für jede der Faltungsschichten hinzu, die zwischen Eingabe- und Ausgabeebene (ausgeblendete Ebenen) hinzugefügt werden. Hier fügen wir zwei Faltungsschichten hinzu.

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

  • Je nach Problem können unterschiedliche Aktivierungsfunktionen verwendet werden. Einige häufige Aktivierungsfunktionen sind relu-Aktivierung, tanh-Aktivierung undicht relu und viele andere.
  • Dann kommt eine vollständig verbundene Schicht vor der dichten Schicht. Sie kompilieren die von vorherigen Ebenen extrahierten Daten, um die endgültige Ausgabe zu erhalten.
  • Die Dimension des Ausgabe-Layers hängt von der Anzahl der Klassen ab. Die Aktivierungsfunktionen, die für die Ausgabeschicht verwendet werden, sind im Allgemeinen Sigmoid-Aktivierung für die binäre Klassifizierung und Softmax-Aktivierung für die Klassifizierung mehrerer Klassen.

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

Der vollständige Code für das Deep Convolutional Neural Network zur Klassifizierung von MNIST-Daten ist wie folgt.

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

Ausbildung

Das Training des Modells sieht so aus,

Schlussfolgerung - Implementierung neuronaler Netze

Neuronale Netze bieten eine einfache Möglichkeit für Klassifizierungs- oder Regressionsprobleme beim maschinellen Lernen, wenn der Merkmalsraum der Samples sehr groß ist, hauptsächlich für große Bilder oder andere Multimedia-Inhalte oder Signale.

Empfohlene Artikel

Dies ist eine Anleitung zur Implementierung neuronaler Netze. Hier diskutieren wir die Architektur und Implementierung von Neuronalen Netzen mit einem Trainingsmodell und Beispielcode. Sie können auch den folgenden Artikel lesen, um mehr zu erfahren -

  1. Klassifikation des neuronalen Netzes
  2. Was sind neuronale Netze?
  3. Faltungsneurale Netze
  4. Neuronale Netzwerkalgorithmen
  5. 2D-Grafik in Java

Kategorie: