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>
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.
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.
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 ...).
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.
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')
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.
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.
Die folgende Abbildung zeigt ein Beispiel für einen diagonalen Balkenfilter. Charakterisieren Sie mit einem diagonalen Balken im gleichen Winkel wie der diagonale Balken.
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 in der unten gezeigten Form hinzufügen. 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.
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.
"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.
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