[PYTHON] [Erklärung für Anfänger] Einführung in die Faltverarbeitung (erklärt in TensorFlow)

Erklärung der "Falt" -Verarbeitung für Anfänger

Als ich das TensorFlow Expert Tutorial Deep MNIST für Experten ausführte, war das erste, was verwirrend war, der "Faltungs" -Prozess. Es ist kein allgemeiner Begriff für einen Absolventen der Freien Künste, und es hat eine Weile gedauert, aber es ist einfach, wenn Sie es verstehen. Grundsätzlich können Sie verstehen, ob Sie ** vier Regeln ** ausführen können. [Erklärung für Anfänger] TensorFlow Tutorial Deep MNIST Lesen Sie den Artikel, in dem die Verarbeitung des neuronalen Faltungsnetzwerks erläutert wird. Darüber hinaus wird im Artikel "[Erklärung für Anfänger] Einführung in die Pooling-Verarbeitung (erklärt in TensorFlow)" auch das Pooling erläutert. * Gepostet mit Bezug auf die von TensorBoard (27.07.2017) ausgegebene Bild </ sup>

Überblick

Überblick

Wie im Artikel "[Erklärung für Anfänger] TensorFlow-Tutorial Deep MNIST" erläutert, findet der "Falt" -Prozess die Merkmale des Bildes. Nicht nur Bilder, sondern auch Audio und Daten sind in Ordnung, aber Bilder sind visueller und leichter zu verstehen, daher werde ich die Verwendung von Bildern erläutern. 10.Overview.JPG

Eingabe / Ausgabe des Faltungsprozesses

Der Faltungsprozess filtert, um die Merkmale hervorzuheben. Unter Verwendung des Bildes als Eingabe und unter Verwendung des Filters wird das Bild für die Anzahl der Filter ausgegeben. Bei Verwendung von MNIST-Daten ist dies wie folgt. Convolve01.JPG

Es war so, als ich die tatsächlichen Ein- / Ausgabebilder für die Faltungsverarbeitung arrangierte, die auf dem TensorBoard ausgegeben wurden. Menschen können es nicht verstehen, aber ich denke, sie können die Atmosphäre verstehen (vielleicht können Bildverarbeitungsprofis es verstehen ...). Convolve06_images01.JPG

Filterbeispiel

Informationen zu Filtern finden Sie unter "Liste der Bildverarbeitungsfilter, Vergleich", da es sich um einen Bearbeitungsprozess für Bilder handelt. Es ist leicht zu erkennen, welche Art von Filter tatsächlich angewendet wird und wie sich das Bild ändert.

Spezifische Verarbeitung

Verwenden Sie nur vier Regeln. Der folgende Programmteil des TensorFlow-Experten-Tutorials Deep MNIST for Experts ist der Faltungsprozess. Dies gilt sowohl für die erste als auch für die zweite Ebene und kann auf dieser Ebene mithilfe der TensorFlow-API implementiert werden.

#Faltvorgang
def conv2d(x, W):
    return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')

Bildbeispiel

Verwenden Sie als Beispiel für das Eingabebild ein diagonales Balkenbild mit 4 vertikalen x 4 horizontalen x 1 Farben (nur schwarz). Der diagonale Balken wird durch 1 und 0 dargestellt. Convolve02.JPG

Keine Polsterung

Die Option, die padding = 'SAME' sagt, wird als Zero Padding bezeichnet und füllt den Umfang mit 0s. Der Grund, warum ich das mache, ist, dass ich den Tensor des Eingabebildes und des Ausgabebildes gleich machen möchte. Convolve03.JPG

Verwendung von Filtern

Die folgende Abbildung zeigt ein Beispiel für einen diagonalen Balkenfilter. Charakterisieren Sie mit einem diagonalen Balken im gleichen Winkel wie der diagonale Balken. Convolve04_filter.JPG

Der folgende Teil des TensorFlow-Experten-Tutorials Deep MNIST für Experten ist der Code, wenn der Filter generiert wird (hier 5 (vertikal) x 5 (horizontal)). × 1 (Farbe) × 32 (Typ)).

W_conv1 = weight_variable([5, 5, 1, 32])

Die Funktion weight_variable generiert den Anfangswert mit einer normalverteilten Zufallszahl mit einer Standardabweichung von 0,1. Danach wird, wie Sie lernen, nach dem optimalen Filterwert gesucht. Die Funktion von tf.truncated_normal finden Sie unter Link.

#Gewichteter Wert
def weight_variable(shape):
    initial = tf.truncated_normal(shape, stddev=0.1)    #Standardabweichung 0.Normalverteilungs-Zufallszahl von 1
    return tf.Variable(initial)

Multiplizieren und addieren

Multiplizieren und in der unten gezeigten Form hinzufügen. Convolve05_step01.JPG Verschieben Sie danach eine nach der anderen und wiederholen Sie die Berechnung. Aufgrund der Nullauffüllung ist das Bild des Ergebnisses des Faltungsprozesses das gleiche 4 vertikal x 4 horizontal. Das Bild unten ist eine schematische Darstellung des zweiten (zweiten von links oben) Faltungsprozesses. Convolve05_step02_new.JPG

Wenn die Berechnung abgeschlossen ist, wird das Ergebnis in der folgenden Abbildung angezeigt. Da der Diagonalbalkenfilter auf den Diagonalbalken angewendet wird, hat er die gleiche Form. Convolve05_step03_new.JPG

Referenz

"Maschinelles Lernen, das selbst Abiturienten verstehen können (7) Falten des neuronalen Netzes Teil 1" und Mathematischer Hintergrund von TensorFlow Tutorial-Deep MNIST für Experten (Teil 1) 1) ist sehr detailliert.

Bedeutung der Faltung in der Mathematik

Faltung ist ein synthetisches Produkt, das in der Mathematik vorkommt. Es wird ausführlich in Wikipedia beschrieben. Der Autor studierte mit dem Lehrmaterial ["Statistik ** Campus Seminar" (http://amzn.to/2oOPJM2), das den Ruf hat, Fähigkeiten entwickeln zu können. Informationen zum Mathematikstudium finden Sie im Artikel "Mathematikstudium für Absolventen der Freien Künste zum Verständnis von Statistik und maschinellem Lernen".

Recommended Posts

[Erklärung für Anfänger] Einführung in die Faltverarbeitung (erklärt in TensorFlow)
[Erklärung für Anfänger] Einführung in die Pooling-Verarbeitung (erklärt in TensorFlow)
Anfänger lesen "Einführung in TensorFlow 2.0 für Experten"
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Einführung in Deep Learning (1) --Chainer wird Anfängern leicht verständlich erklärt.
[Erklärung für Anfänger] TensorFlow-Tutorial MNIST (für Anfänger)
Einführung in die Graph Database Neo4j in Python für Anfänger (für Mac OS X)
[Erklärung für Anfänger] Grundlegende Syntax und Konzept von TensorFlow
Eine Einführung in die objektorientierte Programmierung für Anfänger von Anfängern
[Einführung in TensorBoard] Visualisieren Sie die TensorFlow-Verarbeitung, um das Verständnis zu vertiefen
Versuchen Sie, RPN mit Python zu berechnen (für Anfänger)
Einführung in die Programmierung (Python) TA Tendenz für Anfänger
[Einführung für Anfänger] Umgang mit MySQL mit Python
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
[Einführung in TensorBoard: image] TensorFlow Visualisieren Sie die Bildverarbeitung, um das Verständnis zu vertiefen
opencv-python Einführung in die Bildverarbeitung
Einführung in Private TensorFlow
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
TensorFlow-Lernmethode für Profis der freien Künste und Python-Anfänger
Für Anfänger, wie man mit häufigen Fehlern in Keras umgeht
[Python] Einführung in die Diagrammerstellung mit Corona-Virendaten [Für Anfänger]
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Einführung in Python For, While
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (5) [Einführung in den DB-Betrieb mit Django-Shell]
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Pandas Grundlagen für Anfänger ① Lesen & Verarbeiten
TensorFlow MNIST Für ML Anfänger Übersetzung
Eine Einführung in Mercurial für Nicht-Ingenieure
Pandas Grundlagen für Anfänger ⑧ Ziffernverarbeitung
Einführung in TensorFlow - Hallo World Edition
TensorFlow Tutorial MNIST Für ML-Anfänger
Führen Sie unittest in Python aus (für Anfänger)
So führen Sie TensorFlow 1.0-Code in 2.0 aus
Erste Schritte mit Python für Nicht-Ingenieure
TensorFlow Tutorial -MNIST Für ML-Anfänger
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (4) [Einführung in Routing-Einstellungen und MTV-Entwurfsmuster]
Annäherungserklärung für Anfänger, um in Kaggle Titanic_3 unter den besten 1,5% (0,83732) zu sein
[Für Anfänger] Super Einführung in neuronale Netze, die selbst Katzen verstehen können
Annäherungserklärung für Anfänger, um in Kaggle Titanic_1 unter den besten 1,5% (0,83732) zu sein
[Einführung in Python] Eine ausführliche Erklärung der in Python verwendeten Zeichenkettentypen!
Annäherungserklärung für Anfänger, um in Kaggle Titanic_2 unter den besten 1,5% (0,83732) zu sein
Einführung in Deep Learning ~ Falten und Pooling ~
Eine Einführung in OpenCV für maschinelles Lernen
Wahrscheinlich die einfachste Einführung in TensorFlow
Implementierung und Beschreibung mit XGBoost für Anfänger
Einführung in discord.py (1. Tag) -Preparation for discord.py-
Ergänzende Hinweise zu TensorFlow MNIST für ML-Anfänger
Eine Einführung in Python für maschinelles Lernen
Einführung in TensorFlow - Erläuterung der Begriffe und Konzepte des maschinellen Lernens
Verarbeiten von Memos, die häufig bei Pandas (Anfängern) verwendet werden
Einführung in Docker Erstellen einer Ubuntu-Umgebung in Ubuntu
Einführung in Vektoren: Lineare Algebra in Python <1>
DQN mit TensorFlow implementiert (ich wollte ...)
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
Eine Einführung in Python für C-Sprachprogrammierer
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten