Aufbau eines neuronalen Faltungsnetzes

Inhalt

Dieser Artikel wurde im Rahmen der Data Science Blogathon

In diesem Artikel soll erläutert werden, rote neuronale Faltung und wie man CNN mit der TensorFlow Keras-Bibliothek kompiliert. In diesem Artikel werden die folgenden Themen behandelt.

Analysieren wir zunächst die rotes neuronales Faltung.

Rote neuronale Faltung (CNN)

Das tiefes Lernen Es ist eine sehr wichtige Teilmenge des maschinellen Lernens aufgrund seiner hohen Leistung in mehreren Bereichen. La rote neuronale convolucional (CNN) ist eine leistungsstarke Art von Deep Learning zur Bildverarbeitung, die häufig in der Computer Vision verwendet wird und Bild- und Videoerkennung zusammen mit einem Empfehlungssystem und der Verarbeitung natürlicher Sprache umfasst (NLP).

CNN verwendet ein mehrschichtiges System, bestehend aus dem Eingabeschicht, das Ausgabe-Layer und eine verborgene Schicht, die aus mehreren Faltungsschichten besteht, gruppierte Ebenen, vollständig verbundene Schichten. Wir werden alle Schichten im nächsten Abschnitt des Artikels besprechen, während wir die CNN-Konstruktion erklären..

Lassen Sie uns die Konstruktion von CNN mit der Keras-Bibliothek besprechen und erklären, wie CNN funktioniert.

CNN-Gebäude

Wir werden die verwenden Malaria-Zell-Imaging-Datensatz. Dieser Datensatz besteht aus 27,558 Bilder von mikroskopischen Blutproben. Der Datensatz besteht aus 2 Ordner: Ordner: parasitiert und nicht infiziert. Beispielbilder

ein) parasitierte Blutprobe

B) Nicht infizierte Blutprobe

Wir werden den Aufbau von CNN gemeinsam mit CNN besprechen und an den folgenden Arbeiten arbeiten 6 Schritte:

Paso 1: erforderliche Bibliotheken importieren

Paso 2: Initialisieren Sie CNN und fügen Sie eine Faltdeckel

Paso 3: Gruppierungsvorgang

Paso 4: füge zwei Faltungsschichten hinzu

Paso 5 – Abflachungsvorgang

Paso 6: Schicht und Ausgabeschicht vollständig verbunden

Diese 6 Schritte erklären, wie CNN funktioniert, im folgenden Bild gezeigt:

55796cnn-9342100

Jetzt, Lass uns jeden Schritt analysieren:

1. Importieren Sie erforderliche Bibliotheken

Bitte, siehe untenstehenden Link für detaillierte Erklärungen zu Keras-Modulen.

https://keras.io/getting_started/

Python-Code:

From tensorflow.keras.layers import Input, Lambda, Dicht, Ebnen,Conv2D
von tensorflow.keras.models Modell importieren
aus tensorflow.keras.applications.vgg19 importieren VGG19
aus tensorflow.keras.applications.resnet50 import preprocess_input
aus tensorflow.keras.preprocessing import image
from tensorflow.keras.preprocessing.image import ImageDataGenerator,load_img
von tensorflow.keras.models importieren Sequential
numpy als np importieren
von glob importieren glob
import matplotlib.pyplot als plt
aus tensorflow.keras.layers importieren MaxPooling2D

2. CNN initialisieren und eine Faltungsschicht hinzufügen

Python-Code:

model=sequentiell()

model.add(Conv2D(filter=16,kernel_size=2,padding="gleich",Aktivierung="Lebenslauf",input_shape=(224,224,3)))

Zuerst müssen wir die sequentielle Klasse starten, da es mehrere Schichten gibt, um CNN zu erstellen, und alle müssen nacheinander sein. Dann fügen wir die erste Faltungsschicht hinzu, in der wir angeben müssen 5 Argumente. Dann, Lassen Sie uns jedes Argument und seinen Zweck analysieren.

· Filter

Der Hauptzweck der Faltung besteht darin, Merkmale im Bild mit einem Merkmalsdetektor zu finden. Später, setze sie auf eine Feature-Map, das die Besonderheiten von Bildern bewahrt.

Der Feature-Detektor, was als Filter bekannt ist, auch zufällig initialisiert und dann, nach vielen Iterationen, der Filtermatrixparameter, der sich am besten zum Trennen von Bildern eignet, wird ausgewählt. Zum Beispiel, das Auge, Nase, etc. von Tieren wird als Merkmal angesehen, das verwendet wird, um Bilder mit Filtern oder Merkmalsdetektoren zu klassifizieren. Hier verwenden wir 16 Funktionen.

· Kernel_Größe

Kernel_size bezieht sich auf die Größe des Filterarrays. Hier verwenden wir eine Filtergröße von 2 * 2.

· Füllung

67425Pad-3670102

Lassen Sie uns besprechen, was das Problem mit CNN ist und wie der Füllvorgang das Problem lösen wird.

ein. Für ein Graustufenbild (nxn) und ein Filter / Ader (fxf), die Dimensionen des aus einer Faltungsoperation resultierenden Bildes sind (n – F + 1) x (n – F + 1).

Dann, zum Beispiel, ein Bild von 5 * 7 und einer Filterkerngröße von 3 * 3, das Ausgabeergebnis nach der Faltungsoperation wäre eine Größe von 3 * 5. Deswegen, das Bild verkleinert sich jedes Mal, wenn die Faltungsoperation ausgeführt wird.

B. Pixel, befindet sich in den ecken, haben einen sehr kleinen Beitrag im Vergleich zu den Pixeln in der Mitte.

Dann, um diese Probleme zu mildern, der Füllvorgang wird durchgeführt. Das Auffüllen ist ein einfacher Vorgang zum Hinzufügen von Ebenen mit 0 Ö -1 zu den Eingabebildern, um die oben genannten Probleme zu vermeiden.

Hier verwenden wir Padding = Same arguments, was beschreibt, dass die Ausgabebilder die gleichen Abmessungen wie die Eingabebilder haben.

· AuslöserfunktionLebenslauf

94297reluuu-8785187

Da die Bilder nicht linear sind, um Nichtlinearität bereitzustellen, das Aktivierungsfunktion von Relu Wird nach einer Faltungsoperation angewendet.

Relu bedeutet gleichgerichtete lineare Aktivierungsfunktion. Die Relu-Funktion generiert die Eingabe direkt, wenn sie positiv ist; andererseits, erzeugt null.

· Eingabeformular

Dieses Argument zeigt die Größe des Bildes an: 224 * 224 * 3. Da die Bilder im RGB-Format so sind, Der dritte Abmessungen des Bildes ist 3.

3. Poolbetrieb

Python-Code:

model.add(MaxPooling2D(pool_size=2))

Wir müssen die Gruppierungsoperation nach der Initialisierung von CNN anwenden. Clustering ist ein Downsampling-Vorgang des Bildes. Der Gruppierungs-Layer wird verwendet, um die Dimensionen von Feature-Maps zu reduzieren. Deswegen, Die Pooling-Schicht reduziert die Menge an Parameter zu lernen und den Rechenaufwand im neuronalen Netz zu reduzieren.

68836ppppppppppp-9351255

Zukünftige Operationen werden an Zusammenfassungselementen ausgeführt, die von der Gruppierungsschicht erstellt wurden. anstelle von genau lokalisierten Merkmalen, die von der Faltungsschicht erzeugt werden. Dies führt beim robusteren Modell zu Variationen in der Ausrichtung des Merkmals im Bild..

Es gibt hauptsächlich 3 Typen Gruppierung: –

1. Maximale Gruppierung

2. Durchschnittliche Gruppierung

3. Globale Gruppierung

4. Fügen Sie zwei Faltungsschichten hinzu

Um zwei weitere Faltungsschichten hinzuzufügen, Wir müssen die Schritte wiederholen 2 Ja 3 mit einer leichten Änderung in der Anzahl der Filter.

Python-Code:

model.add(Conv2D(filter=32,kernel_size=2,padding="gleich",Aktivierung ="Lebenslauf"))
model.add(MaxPooling2D(pool_size=2))
model.add(Conv2D(filter=64,kernel_size=2,padding="gleich",Aktivierung="Lebenslauf"))
model.add(MaxPooling2D(pool_size=2))

Wir modifizieren die 2Norddakota Ja 3rd Faltungsschichten mit Filternummer 32 Ja 64 beziehungsweise.

5. Abflachungsvorgang

Python-Code:

model.add(Ebnen())

Die Abflachungsoperation besteht darin, den Datensatz in eine 1-D-Matrix umzuwandeln, um in die nächste Schicht einzutreten, das ist die vollständig verbundene Schicht.

36841tttttt-6506254

Nach Abschluss der 3 Schritte, jetzt haben wir die Feature Map gruppiert. Jetzt glätten wir unseren Ausgang nach zwei Schritten in einer Spalte. Weil wir diese 1D-Daten in eine künstliche neuronale Netzwerkschicht einfügen müssen.

6. Vollständig verbundene Schicht und Ausgabeschicht

Die Ausgabe der Abflachungsoperation dient als Eingabe in das neuronale Netz. Das Ziel des künstlichen neuronalen Netzwerks macht das neuronale Faltungsnetzwerk fortschrittlicher und leistungsfähig genug, um Bilder zu klassifizieren.

45580ssssss-7571933

Hier verwenden wir eine dichte Klasse aus der Keras-Bibliothek, um eine vollständig verbundene Ebene und eine Ausgabeebene zu erstellen.

Python-Code:

model.add(Dicht(500,Aktivierung="Lebenslauf"))

model.add(Dicht(2,Aktivierung="softmax"))

Die softMax enable-Funktion wird verwendet, um die Ausgabeschicht aufzubauen. Analysieren wir die Aktivierungsfunktion von softmax.

Softmax-Aktivierungsfunktion

59812sssssssssss-1488041

Sie wird als letzte Aktivierungsfunktion eines neuronalen Netzes verwendet, um die Ausgabe des neuronalen Netzes auf eine Wahrscheinlichkeitsverteilung über die Vorhersageklassen zu bringen. Die Ausgabe von Softmax ist in Wahrscheinlichkeiten jedes möglichen Ergebnisses, um die Klasse vorherzusagen. Die Summe der Wahrscheinlichkeiten muss für alle möglichen Vorhersageklassen eins sein.

Jetzt, Analysieren wir die Ausbildung und die Evaluierung des Convolutional Neural Networks. Wir werden diesen Abschnitt in besprechen 3 Schritte; –

Paso 1: das CNN-Modell kompilieren

Paso 2: Passen Sie das Modell in das Trainingsset an

Paso 3: das Ergebnis bewerten

Paso 1: das CNN-Modell kompilieren

Codezeile

model.compile (Verlust = ‚kategoriale_Kreuzentropie‘, Optimierer = ‚Adam‘, Metriken =['Richtigkeit'])

Hier verwenden wir 3 Argumente: –

· Verlustfunktion

Wir verwenden die kategoriale_Kreuzentropie Verlustfunktion, die in der Klassifizierungsaufgabe verwendet wird. Dieser Verlust ist ein sehr gutes Maß dafür, wie unterscheidbar zwei diskrete Wahrscheinlichkeitsverteilungen voneinander sind..

Bitte, Eine detaillierte Beschreibung der verschiedenen Arten der Verlustfunktion finden Sie unter folgendem Link:

https://machinelearningmastery.com/how-to-choose-loss-functions-when-training-deep-learning-neural-networks/

· Optimierer

Wir benutzen Adam Optimizer wird verwendet, um neuronale Netzwerkgewichte und Lernrate zu aktualisieren. Optimierer werden verwendet, um Optimierungsprobleme durch Minimieren der Funktion zu lösen.

Bitte, siehe den Link unten für eine detaillierte Erklärung der verschiedenen Arten von Optimierern:

https://medium.datadriveninvestor.com/overview-of-different-optimizers-for-neural-networks-e0ed119440c3

· Messwertargumente

Hier, Wir verwenden Präzision als Metrik, um die Leistung des Faltungsalgorithmus für neuronale Netze zu bewerten.

Paso 2: Passen Sie das Modell in das Trainingsset an

Codezeile:

model.fit_generator(Trainingsset,validation_data=test_set,Epochen=50, steps_per_epoch = only(Trainingsset), validation_steps=len(test_set) )

Wir passen das CNN-Modell an den Trainingsdatensatz an mit 50 Iterationen und jede Iteration hat unterschiedliche Schritte zum Trainieren und Bewerten von Schritten basierend auf der Dauer des Test- und Trainingssatzes.

Paso 3: – Bewerten Sie das Ergebnis

Wir vergleichen die Präzisions- und Verlustfunktion für den Trainings- und Testdatensatz.

Code: Verlustdiagrammplot

plt.plot(r.geschichte[Verlust], Etikett="Zugverlust")
plt.plot(r.geschichte[Validierungsverlust], Etikett="Wertverlust")
plt.legende()
plt.zeigen()
plt.savefig('LossVal_loss')

Produktion

84637llllllll-3357681

Verlust ist die Strafe für eine schlechte Vorhersage. Ziel ist es, den Validierungsverlust so gering wie möglich zu halten. Ein bisschen Overfitting ist fast immer gut. Alles was zählt, schließlich, es ist: ist der geringstmögliche Validierungsverlust.

Code: Präzisionsdiagramm zeichnen

plt.plot(r.geschichte[Genauigkeit], Etikett="Zugak")
plt.plot(r.geschichte[Validierungsgenauigkeit], Etikett="Wertguthaben")
plt.legende()
plt.zeigen()
plt.savefig('AccVal_acc')

Produktion

28356aaaaaaa-7616326

Genauigkeit ist eine Metrik zur Bewertung von Klassifizierungsmodellen. Informell, Präzision ist der Bruchteil der Vorhersagen, die unser Modell richtig gemacht hat. Hier, Wir können sehen, dass die Präzision nahe bei . liegt 90% im Validierungstest, der zeigt, dass ein CNN-Modell bei Präzisionsmetriken gut abschneidet.

Danke fürs Lesen! Viel Spaß beim tiefen Lernen!

Verweise:

1. https://www.superdatascience.com/

2. https://www.youtube.com/watch?v=H-bcnHE6Mes

Über mich :

Soja Jitendra Sharma, Data Science Praktikant bei Nabler, y me dedico a PGDM-Big Data Analytics del Goa Institute of Management. Sie können mich über kontaktieren LinkedIn Ja Github.

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher