[PYTHON] TensorFlow mit Arithmetik verstehen

TensorFlow ist in erster Linie eine Bibliothek zur Implementierung von maschinellem Lernen, insbesondere von mehrschichtigen neuronalen Netzen (Deep Learning). Sie müssen dies jedoch nicht schwer tun, um zu verstehen, wie es funktioniert.

In diesem Artikel möchte ich den Mechanismus von TensorFlow anhand einfacher Berechnungen wie der Arithmetik aufklären.

Eigenschaften von TensorFlow

Zunächst möchte ich die Funktionen von TensorFlow zusammenfassen. TensorFlow ist, wie der Name schon sagt, ein Werkzeug zum Schreiben des Flusses (Berechnungsverarbeitung) von Tensor (entsprechend mehrdimensionalem Array, Matrix usw.). Seine Eigenschaften sind wie folgt.

Bemerkenswert ist auch, dass es eine Erfolgsgeschichte in der Verwendung in verschiedenen Diensten (Suchranking, Bildklassifizierung) innerhalb von Google aufweist.

Weitere Informationen zu den oben genannten Inhalten finden Sie im folgenden Teil der offiziellen Seite.

Wie TensorFlow funktioniert

Der Mechanismus von TensorFlow ist wie folgt.

image

Das TensorFlow-Diagramm besteht aus Knoten und Kante. Der Knoten repräsentiert den Berechnungsprozess (grüner Kreis in der Abbildung) oder die Eingabe / Ausgabe am Ende (blauer Kreis in der Abbildung). Kante repräsentiert ein mehrdimensionales Array oder einen Tensor, der der Wert des Berechnungsergebnisses ist. Anschließend wird der Sitzung ein Diagramm zugewiesen, um die Berechnung durchzuführen. Die Sitzung berechnet Knoten, die berechnet werden können (Knoten, bei denen alle Berechnungsergebnisse von der Kante gesendet werden), asynchron / parallel. Bei der Berechnung weisen wir auch zu, welches Gerät (CPU / GPU) verwendet werden soll.

Dies ist das Gesamtbild des Berechnungsprozesses in TensorFlow. Bitte beachten Sie den folgenden Teil der offiziellen Seite.

Getting Started

Darüber hinaus werden die Eingabe / Ausgabe am Ende, insbesondere das Lesen von Dateien und das Speichern von Berechnungsergebnissen usw., an den folgenden Stellen zusammengefasst.

All dies sind Prozesse, die häufig bei der tatsächlichen Berechnung anhand von Daten verwendet werden. Überprüfen Sie dies daher unbedingt.

Berechnung mit TensorFlow

Jetzt möchte ich TensorFlow tatsächlich verwenden, um arithmetische ... einfache Berechnungen durchzuführen. Der diesmal eingeführte Code ist im folgenden Repository zusammengefasst.

icoxfog417/tensorflow-arithmetic

Sie können auf das iPython-Notizbuch unter tensorflow-arithmetic.ipynb verweisen.

Installation

Installationsanweisungen finden Sie unten. Es wird empfohlen, "pip install" zu verwenden.

Getting Started/Download and Setup

Berechnung

Lassen Sie uns nun tatsächlich mit TensorFlow rechnen. Zuerst werde ich die folgende Formel schreiben (obwohl Mathe etwas mehr ist als Mathe).

y = x^2 + b

Die in TensorFlow geschriebene Formel lautet wie folgt.

import tensorflow as tf

def x2_plus_b(x, b):
    _x = tf.constant(x)
    _b = tf.constant(b)
    result = tf.square(_x)
    result = tf.add(result, _b)
    return result

Es sieht aus wie in der Abbildung unten.

image

Nachdem der Ausdruck vollständig ist, führen wir ihn tatsächlich mit "Sitzung" aus.

with tf.Session() as sess:
    result = sess.run([x2_plus_b(2., 3.)])
    print(result)

Das Ausführungsergebnis (Ausgabe von print) ist wie folgt.

[7.0]

Da $ 2 ^ 2 + 3 = 7 $, können Sie sehen, dass die Berechnung ordnungsgemäß durchgeführt wird. Die verfügbaren Rechenmethoden sind dokumentiert.

TensorFlow API/Math

Das Argument kann auch in der Form "Platzhalter" angegeben werden.

import tensorflow as tf

p_x = tf.placeholder(tf.float32)
p_b = tf.placeholder(tf.float32)
p_x2_plus_b = tf.add(tf.square(p_x), p_b)

with tf.Session() as sess:
    result = sess.run([p_x2_plus_b], feed_dict={p_x: [2.], p_b: [3.]})
    print(result)

Verwenden Sie feed_dict, um beim Ausführen von Session einen Wert an placeholder zu übergeben.

Visualisierung

Eine der Funktionen von TensorFlow ist das leistungsstarke Visualisierungstool TensorBoard. Verwenden Sie dies, um das Berechnungsergebnis der Formel zu visualisieren.

Wenn Sie mit pip installiert haben, sollten Sie in der Lage sein, den Befehl tensorboard auszuführen. Die Visualisierung wird damit durchgeführt, aber zuerst geben wir den Wert des zu visualisierenden Objekts aus.

import tensorflow as tf

def monitor_calculation(x, b):
    title = "b = {0}".format(b)
    c = x2_plus_b(float(x), float(b))
    s = tf.scalar_summary(title, c)
    m = tf.merge_summary([s])  # if you are using some summaries, merge them
    return m

with tf.Session() as sess:
    writer = tf.train.SummaryWriter("log", graph_def=sess.graph_def)    
    xaxis = range(-10, 12)

    for b in range(3):
        for x in xaxis:
            summary_str = sess.run(monitor_calculation(x, b))
            writer.add_summary(summary_str, x)

Der Punkt ist, den durch "tf.scalar_summary" berechneten Wert zusammenzufassen. Die so berechnete Zusammenfassung wird mit tf.train.SummaryWriter geschrieben.

Wenn der obige Prozess ausgeführt wird, wird die Datei im Ordner "log" ausgegeben. Führen Sie dann "Tensorboard" wie folgt aus:

tensorboard --logdir=/path/to/log-directory

(Der Weg ist definitiv ein absoluter Weg). Dann denke ich, dass das Diagramm wie unten gezeigt angezeigt wird (* Es dauert lange, bis es nach dem Start angezeigt wird. Wenn ich dachte, dass es für eine lange Zeit nicht angezeigt wird, wird es möglicherweise plötzlich angezeigt). ..

graph.png

Jetzt können Sie die berechneten Werte usw. einfach darstellen. Zum Zeitpunkt des maschinellen Lernens wird es möglich sein, die Lernsituation durch Zeichnen von Fehlern und Genauigkeit zu erfassen.

Außerdem können Sie auf der Registerkarte "GRAFIK" eine Visualisierung der konstruierten Formel (= Grafik) sehen.

graph.png

Weitere Informationen zum Zeichnen von Diagrammen (z. B. Erstellen und Zusammenfassen von Prozessen mithilfe von Namespaces) finden Sie weiter unten.

TensorBoard: Graph Visualization

Weitere Informationen zur Verwendung von TensorBoard finden Sie im Folgenden.

TensorBoard: Visualizing Learning

Für den Export der Zusammenfassung ist das Beispiel mnist hilfreich. Es gibt eine Beschreibung des Prozesses in "mnist.py" (hier unter Verwendung von "scalar_summary" usw.), und in "full_connected_feed.py" wird der in "mnist.py" definierte Prozess kombiniert und ausgeführt. ..

Das Obige ist der grundlegende Mechanismus von TensorFlow. Dieser Inhalt ähnelt dem Inhalt von Erste Schritte.

Ich denke, dass es immer mehr Artikel über maschinelles Lernen mit TensorFlow geben wird, also hoffe ich, dass es Ihnen hilft, sie zu verstehen.

Recommended Posts

TensorFlow mit Arithmetik verstehen
VQ-VAE verstehen
Verketten verstehen
Tensorflow Glossar
tensorflow mnist_deep.py
TensorFlow Tutorial Tutorial
[Einführung in TensorBoard] Visualisieren Sie die TensorFlow-Verarbeitung, um das Verständnis zu vertiefen