Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für einen Faltungsalgorithmus eines neuronalen Netzwerks in Python

Beispiel für einen Faltungsalgorithmus eines neuronalen Netzwerks in Python

王林
王林Original
2023-06-11 12:37:371485Durchsuche

Convolutional Neural Network (CNN) ist ein neuronaler Netzwerkalgorithmus, der häufig in der Bilderkennung, Spracherkennung, Verarbeitung natürlicher Sprache und anderen Bereichen eingesetzt wird. Es stützt sich auf die Struktur biologischer Neuronen, verarbeitet die zweidimensionale räumliche Struktur der Eingabedaten und wendet eine Gewichtsverteilungsmethode in der Faltungsschicht und der Poolschicht an, wodurch die Anzahl der zu optimierenden Parameter erheblich reduziert und dadurch verbessert wird Generalisierungsfähigkeit und Effizienz des Modells.

Python ist eine Programmiersprache, die in den Bereichen wissenschaftliches Rechnen, maschinelles Lernen und Deep Learning weit verbreitet ist. Sie hat den Vorteil, dass sie einfach und benutzerfreundlich, Open Source und kostenlos ist und reich an Bibliotheken von Drittanbietern ist von immer mehr Forschern und Ingenieuren. In Python können wir verschiedene Deep-Learning-Frameworks verwenden, um Faltungsalgorithmen für neuronale Netze zu implementieren, darunter Keras, TensorFlow, PyTorch usw.

Im Folgenden stellen wir anhand eines Beispiels vor, wie das Keras-Framework zur Implementierung des Faltungsalgorithmus für neuronale Netzwerke in Python verwendet wird.

Einführung in den Datensatz

In diesem Beispiel wird der Datensatz CIFAR-10 verwendet, der 60.000 32x32-Farbbilder in 10 Kategorien enthält und die Anzahl der Bilder in jeder Kategorie 6.000 beträgt. Diese Bilder werden in einen Trainingssatz und einen Testsatz unterteilt, wobei der Trainingssatz 50.000 Bilder und der Testsatz 10.000 Bilder enthält.

In Python können wir die von der Keras-Bibliothek bereitgestellte Funktion cifar10.load_data verwenden, um den CIFAR-10-Datensatz zu laden, wie unten gezeigt:

from keras.datasets import cifar10

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

wobei x_train und x_test die Bilddaten des Trainingssatzes und des Testsatzes sind y_train und y_test sind jeweils die Bezeichnungen des Trainingssatzes bzw. des Testsatzes.

Modellkonstruktion

Das in diesem Beispiel verwendete Faltungs-Neuronale-Netzwerk-Modell enthält mehrere Faltungsschichten, Pooling-Schichten und vollständig verbundene Schichten. Die spezifische Struktur ist wie folgt:

  1. Eingabeschicht: Die Größe des Eingabebildes beträgt 32 x 32 x 3, wobei 3 bedeutet RGB drei Kanäle.
  2. Faltungsschicht 1: Verwenden Sie 32 Faltungskerne der Größe 3x3, der Schritt ist 1 und die Aktivierungsfunktion ist ReLU.
  3. Faltungsschicht 2: Verwenden Sie 64 Faltungskerne der Größe 3x3, der Schritt ist 1 und die Aktivierungsfunktion ist ReLU.
  4. Pooling-Schicht 1: Verwenden Sie einen Pooling-Kernel der Größe 2x2 mit einem Schritt von 2.
  5. Faltungsschicht 3: Verwenden Sie 128 Faltungskerne der Größe 3x3, der Schritt ist 1 und die Aktivierungsfunktion ist ReLU.
  6. Pooling-Schicht 2: Verwenden Sie einen Pooling-Kernel der Größe 2x2 mit einem Schritt von 2.
  7. Vollständig verbundene Schicht 1: Enthält 128 Neuronen und die Aktivierungsfunktion ist ReLU.
  8. Vollständig verbundene Schicht 2: Enthält 10 Neuronen, entsprechend 10 Kategorien, und die Aktivierungsfunktion ist Softmax.

In Python können wir das Modell Schicht für Schicht über die von der Keras-Bibliothek bereitgestellte Sequential-Klasse aufbauen, wie unten gezeigt:

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

model = Sequential()
model.add(Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation='relu', input_shape=(32, 32, 3)))
model.add(Conv2D(filters=64, kernel_size=(3, 3), strides=(1, 1), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Conv2D(filters=128, kernel_size=(3, 3), strides=(1, 1), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Flatten())
model.add(Dense(units=128, activation='relu'))
model.add(Dense(units=10, activation='softmax'))

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

Unter diesen repräsentiert die Conv2D-Klasse die Faltungsschicht, die MaxPooling2D-Klasse die Pooling-Schicht, und die Flatten-Klasse stellt die mehrdimensionale Eingabe dar. Die Eingabe ist eindimensional, und die Dense-Klasse stellt eine vollständig verbundene Schicht dar. Die Funktion model.compile wird verwendet, um das Modell zu kompilieren und den Optimierungsalgorithmus, die Verlustfunktion, den Bewertungsindex usw. anzugeben.

Modelltraining und -bewertung

Nachdem das Modell erstellt wurde, können wir die Trainingssatzdaten verwenden, um das Modell zu trainieren. In Python können wir die Fit-Funktion verwenden, um das Modelltraining zu implementieren, wie unten gezeigt:

from keras.utils import np_utils

y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)

model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))

Unter anderem wird die Funktion np_utils.to_categorical verwendet, um Beschriftungen in One-Hot-Codierung umzuwandeln. Die Fit-Funktion wird zum Trainieren des Modells verwendet und gibt die Anzahl der Trainingsrunden, die Stapelgröße, die Daten des Validierungssatzes usw. an. Nachdem das Training abgeschlossen ist, können wir die Evaluierungsfunktion verwenden, um das Modell zu bewerten, wie unten gezeigt:

loss, accuracy = model.evaluate(x_test, y_test)

In diesem Beispiel beträgt die Genauigkeit des Modells auf dem Testsatz nach 10 Trainingsrunden 0,7318.

Zusammenfassung

In diesem Artikel wird ein Beispiel für die Verwendung des Keras-Frameworks zur Implementierung des Faltungsalgorithmus für neuronale Netzwerke in Python vorgestellt. Mithilfe des CIFAR-10-Datensatzes und spezifischer Modellstrukturen können wir lernen, wie man Faltungs-Neuronale Netze in Python erstellt, trainiert und bewertet. Darüber hinaus kann die Leistung des Modells durch Anpassung der Modellstruktur und -parameter weiter verbessert werden.

Das obige ist der detaillierte Inhalt vonBeispiel für einen Faltungsalgorithmus eines neuronalen Netzwerks in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn