Heim  >  Artikel  >  Backend-Entwicklung  >  Aufbau eines einfachen Faltungs-Neuronalen Netzwerks (CNN) in Python

Aufbau eines einfachen Faltungs-Neuronalen Netzwerks (CNN) in Python

WBOY
WBOYOriginal
2024-08-28 18:33:07868Durchsuche

Building a Basic Convolutional Neural Network (CNN) in Python

Convolutional Neural Networks (CNNs) sind leistungsstarke Werkzeuge für Bildverarbeitungs- und Erkennungsaufgaben. Sie sind darauf ausgelegt, räumliche Hierarchien von Features durch Backpropagation automatisch und adaptiv zu erlernen. Lassen Sie uns in den Aufbau eines einfachen CNN mit Python und TensorFlow/Keras eintauchen.

? Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Bibliotheken installiert sind:

pip install tensorflow numpy matplotlib

?️ Schritt 1: Notwendige Bibliotheken importieren

Beginnen Sie mit dem Importieren der wesentlichen Bibliotheken:

import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt

?️ Schritt 2: Den Datensatz laden und vorverarbeiten

Für dieses Beispiel verwenden wir den CIFAR-10-Datensatz, der aus 60.000 32x32-Farbbildern in 10 Klassen besteht.

# Load the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()

# Normalize the pixel values to be between 0 and 1
x_train, x_test = x_train / 255.0, x_test / 255.0

? Schritt 3: Erstellen Sie das CNN-Modell

Lassen Sie uns nun das CNN-Modell erstellen. Dieses Modell umfasst die Schlüsselschichten: Faltungs-, Pooling- und Dichteschicht.

model = models.Sequential()

# First Convolutional Layer
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))

# Second Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))

# Third Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

# Flatten the output and add Dense layers
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

? Schritt 4: Kompilieren Sie das Modell

Das Kompilieren des Modells umfasst die Angabe des Optimierers, der Verlustfunktion und der Metriken, die während des Trainings überwacht werden sollen.

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

? Schritt 5: Trainieren Sie das Modell

Trainieren Sie das CNN-Modell einige Epochen lang anhand der Trainingsdaten.

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

? Schritt 6: Bewerten Sie das Modell

Bewerten Sie das Modell nach dem Training anhand der Testdaten, um zu sehen, wie gut es funktioniert.

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f'\nTest accuracy: {test_acc}')

?️ Schritt 7: Trainingsergebnisse visualisieren

Lassen Sie uns abschließend die Genauigkeit und den Verlust über die Trainingsepochen hinweg visualisieren.

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0, 1])
plt.legend(loc='lower right')
plt.show()

? Abschluss

Dieses grundlegende CNN-Modell dient als guter Ausgangspunkt für die Bewältigung von Bildklassifizierungsaufgaben. Durch das Verstehen und Modifizieren dieses Modells können Sie mit verschiedenen Architekturen und Techniken experimentieren, um die Leistung Ihres Modells zu verbessern. Erkunden und optimieren Sie die Ebenen weiter, um noch leistungsfähigere neuronale Netze aufzubauen! ?


Dieser Code ist so konzipiert, dass er leicht zu befolgen und zu ändern ist, sodass er für Anfänger und diejenigen geeignet ist, die mit CNNs in Python beginnen möchten.

Blog-Link für CNN-Architektur:https://dev.to/abhinowww/demystifying-cnn-neural-network-layers-a-deep-dive-into-ai-architecture-12d2

Das obige ist der detaillierte Inhalt vonAufbau eines einfachen Faltungs-Neuronalen Netzwerks (CNN) 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