[PYTHON] [Deep Learning] Untersuchen Sie, wie jede Funktion des Faltungsnetzes verwendet wird [DW Tag 3]

Was ist das Convolutional Neural Network (CNN)?

Ein auf Bilder spezialisiertes neuronales Netz. Während ein normales mehrschichtiges Perzeptron aus einer Eingangsschicht, einer Zwischenschicht und einer Ausgangsschicht besteht, weist das CNN auch eine Faltungsschicht, eine Poolschicht und eine lokal normalisierte Schicht (LRN-Schicht) auf.

Wenn Sie AlexNet (oben in ILSVRC2012) im Chainer-Beispiel betrachten, sieht es folgendermaßen aus:

# … (Weggelassen)
class AlexBN(chainer.Chain):

   """Single-GPU AlexNet with LRN layers replaced by BatchNormalization."""

   insize = 227

   def __init__(self):
       super(AlexBN, self).__init__(
           conv1=L.Convolution2D(3,  96, 11, stride=4),
           bn1=L.BatchNormalization(96),
           conv2=L.Convolution2D(96, 256,  5, pad=2),
           bn2=L.BatchNormalization(256),
           conv3=L.Convolution2D(256, 384,  3, pad=1),
           conv4=L.Convolution2D(384, 384,  3, pad=1),
           conv5=L.Convolution2D(384, 256,  3, pad=1),
           fc6=L.Linear(9216, 4096),
           fc7=L.Linear(4096, 4096),
           fc8=L.Linear(4096, 1000),
       )
       self.train = True

# … (Weggelassen)

Es besteht aus 5 Faltungsschichten und 3 vollständig verbundenen Schichten. In diesem Artikel wird auch darauf hingewiesen, dass die Aktivierungsfunktionen ReLu, Multi-GPU, LRN und Pooling wichtig sind. Das obige Kettenbeispiel verwendet die Chargennormalisierung anstelle von LRN. Im Folgenden wird die Chargennormalisierung detailliert beschrieben.

Faltschicht

L.Convolution2D(3,  96, 11, stride=4)

Die Formel zum Falten entfällt, da sie in verschiedenen Nachschlagewerken geschrieben ist. Hier wollen wir diese Funktion nutzen können. Erstens besteht die Faltung darin, ein Bild zu filtern und zu konvertieren. Wie das Bild verfügt der Filter über Variablen wie die Anzahl der Pixel und den Kanal. Unter der Annahme, dass die Anzahl der Pixel des Bildes $ N \ mal N $ und die Anzahl der Kanäle $ K $ beträgt, beträgt die Größe des Filters auch $ H \ mal H , genau wie die Größe des Bildes als $ N \ mal N \ mal K $ geschrieben wird. Schreiben Sie wie mal K $. Die Anzahl der Bild- und Filterkanäle ist gleich. Es können mehrere Arten von Filtern auf das Bild angewendet werden. Wenn Sie den Filter vom Typ $ M $ anwenden, wird die Anzahl der Kanäle im Ausgabebild in $ M $ konvertiert. Wenn Sie einen Filter anwenden, wird der Filter beim Bewegen teilweise angewendet, und die Breite der Bewegung wird als Schrittweite bezeichnet. Durch Erhöhen der Schrittweite können Bildmerkmale leichter übersehen werden, sodass eine kleinere Schrittweite wünschenswert ist. Das Bereitstellen virtueller Pixel außerhalb des Bildrandes wird als Auffüllen bezeichnet. Durch Auffüllen ist es möglich, die Verkleinerung des Bildes beim Falten zu unterdrücken. Wenn Sie möchten, dass die Größe der Eingabe entspricht, kürzen Sie die Auffüllgröße auf $ H / 2 $. Zusammenfassend ist das Argument von "pythonL.Convolution2D ()"

Wird sein. Es gibt keine Angabe bezüglich der Anzahl der Pixel im Eingabe- / Ausgabebild.

Chargennormalisierung

L.BatchNormalization(96)

Das Argument ist die Anzahl der Kanäle des zu normalisierenden Bildes. Dies entspricht der Anzahl der Ausgangskanäle der vorherigen Faltung ($ M $).

Pooling-Schicht

 h = self.bn1(self.conv1(x), test=not self.train)
 h = F.max_pooling_2d(F.relu(h), 3, stride=2)

Das Pooling wird durchgeführt, nachdem das Ergebnis der Faltungsschicht in ReLu eingegeben wurde. Beim Pooling wird auf einen bestimmten Bereich wie einen Filter geachtet und ein repräsentativer Wert für diesen Bereich gemäß einer bestimmten Regel ausgegeben. Infolgedessen kann eine Positionsinvarianz erhalten werden. Es gibt viele Variationen des Poolings.

AlexNet verwendet maximales Pooling.

Zusammenfassen der Argumente von F.max_pooling_2d (),

Auch hier ist die Anzahl der Eingabe- / Ausgabepixel nicht angegeben.

Ich habe versucht, AlexNet zu verwenden

Im nächsten Artikel (schriftlich) werde ich das Ergebnis der Verwendung von AlexNet schreiben.

Recommended Posts

[Deep Learning] Untersuchen Sie, wie jede Funktion des Faltungsnetzes verwendet wird [DW Tag 3]
[Deep Learning] Bildklassifizierung mit Faltungsnetz [DW Tag 4]
Verwendung der Zip-Funktion
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Ich habe versucht, die Genauigkeit meines eigenen neuronalen Netzwerks zu verbessern
[Deep Learning von Grund auf neu] Anfangswert des Gewichts des neuronalen Netzwerks unter Verwendung der Sigmoid-Funktion
So installieren Sie das Deep Learning Framework Tensorflow 1.0 in der Windows Anaconda-Umgebung
Grundlagen von PyTorch (2) - Wie erstelle ich ein neuronales Netzwerk?
Wie man das Dokument der magischen Funktion (Linienmagie) trifft
[Deep Learning von Grund auf neu] Anfangsgewicht des neuronalen Netzwerks bei Verwendung der Relu-Funktion
[Teil 4] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
[Teil 3] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Verwendung des Generators
Kapitel 3 Neuronales Netz Schneiden Sie nur die guten Punkte des Deeplearning aus, die von Grund auf neu erstellt wurden
So führen Sie die Exportfunktion des GCP-Datenspeichers automatisch aus
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
[Teil 2] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
So zeichnen Sie einfach die Struktur eines neuronalen Netzwerks in Google Colaboratory mit "convnet-drawer"
Wie benutzt man den Dekorateur?
[Deep Learning von Grund auf neu] Informationen zu den Ebenen, die für die Implementierung der Backpropagation-Verarbeitung in einem neuronalen Netzwerk erforderlich sind
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
[Python] Erklärt anhand eines Beispiels, wie die Formatierungsfunktion verwendet wird
Verwendung von Jupyter am Frontend von Spacon ITO
Verwendung der in .mako (.html) direkt in mako definierten Renderfunktion
[NNabla] So entfernen Sie die mittlere Ebene eines vorgefertigten Netzwerks
Verstehen Sie die Anzahl der Eingabe- / Ausgabeparameter des Faltungs-Neuronalen Netzes
Verwendung des optparse-Moduls
Zusammenfassung der Verwendung von pandas.DataFrame.loc
Einführung in das tiefe Lernen ~ Funktionsnäherung ~
Zusammenfassung der Verwendung von pyenv-virtualenv
Berühren Sie das Objekt des neuronalen Netzes
Verwendung der Zip-Funktion von Python
Studiere gründlich Deep Learning [DW Tag 0]
Zusammenfassung der Verwendung von csvkit
Verwendung des ConfigParser-Moduls
Ich habe versucht, die Lernfunktion im neuronalen Netzwerk sorgfältig zu verstehen, ohne die Bibliothek für maschinelles Lernen zu verwenden (zweite Hälfte).
[Python] So machen Sie den Dateinamen der Ausgabedaten eindeutig (verwenden Sie Jahr, Monat, Tag, Stunde und Sekunde)
Wie man für den Deep Learning Association G-Test (für Anfänger) lernt [Version 2020]
Lernaufzeichnung (4. Tag) #Wie man den absoluten Pfad vom relativen Pfad erhält
[Python] Erklärt anhand eines konkreten Beispiels, wie die Bereichsfunktion verwendet wird
Wie nutzt man maschinelles Lernen für die Arbeit? 02_AI Entwicklungsprojektübersicht
Verwendung der Bibliothek "torchdiffeq", die den ODE-Block von Neural ODE implementiert
[Python] Verwendung der Aufzählungsfunktion (Indexnummer und Element extrahieren)
So erstellen Sie einen Wrapper, der die Signatur der zu umschließenden Funktion beibehält
[C-Sprache] Verwendung der Krypta-Funktion unter Linux [Passwort-Hashing]
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
[Python] Zusammenfassung der Verwendung von Pandas
Verwendung der Spark ML-Pipeline
Verwendung des Entwicklernetzwerks von cybozu.com (Teil 2)
scikit-learn Verwendung der Zusammenfassung (maschinelles Lernen)
So überprüfen Sie die Version von Django
Othello-Aus der dritten Zeile von "Implementation Deep Learning" (3)
Implementierung eines 3-Schicht-Neuronalen Netzwerks (kein Lernen)
[Python] Verwendung von __command__, Funktionserklärung
[Linux] Verwendung des Befehls echo
Berechnen Verwenden Sie% des Befehls df
So studieren Sie den Deep Learning G-Test
Visualisieren Sie die Auswirkungen von Deep Learning / Regularisierung
[Python2.7] Zusammenfassung der Verwendung von unittest