TensorFlow Tutorial: 10 Minuten TensorFlow Anfänger Tutorial [Übersetzung]

Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels "TensorFlow-Tutorial: 10 Minuten praktische TensorFlow-Lektion für schnelle Lernende" von Ankit Sachan.


Dieses TensorFlow-Tutorial richtet sich an alle, die ein grundlegendes Verständnis des maschinellen Lernens haben und versuchen, mit TensorFlow zu beginnen.


Zunächst muss TensorFlow installiert sein. Sie können es in diesem Handbuch installieren. Diese Lektion gliedert sich in zwei Teile: Im ersten Teil erklären wir die Grundlagen anhand eines Arbeitsbeispiels, im zweiten Teil erstellen wir ein lineares Regressionsmodell.


Teil 1. TensorFlow-Grundlagen


TensorFlow ist eine numerische Bibliothek, in der Daten durch ein Diagramm geleitet werden. Die Daten in TensorFlow werden durch n-dimensionale Arrays - Tensoren - dargestellt. Der Graph besteht aus Daten (Tensoren) und mathematischen Operationen.


In den Knoten des Graphen befinden sich mathematische Operationen.


Die Kanten des Diagramms stellen Tensoren dar, die zwischen Operationen "fließen".


Es gibt einen weiteren Aspekt, in dem sich TensorFlow von jeder anderen Programmiersprache unterscheidet. In TensorFlow müssen Sie zuerst ein Projekt mit dem erstellen, was Sie erstellen möchten. Beim Erstellen eines Diagramms haben Variablen zunächst keine Bedeutung. Wenn Sie später ein vollständiges Diagramm erstellt haben, führen Sie es in einer Sitzung aus, und erst dann nehmen die Variablen Werte an.


Beginnen wir mit dem Lernen. Führen Sie Python aus und importieren Sie TensorFlow:


~$ python Python 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>>import tensorflow as tf 

Ein Diagramm wird zum Definieren von Operationen verwendet, und alle Operationen werden in einer Sitzung ausgeführt. Diagramme und Sitzungen werden unabhängig voneinander erstellt. Behandeln Sie die Grafik als Bauprojekt und die Sitzung als Baustelle.


1.1. Diagramme in TensorFlow


Ein Diagramm ist die Basis von TensorFlow. Alle Berechnungen (Operationen) und Variablen befinden sich im Diagramm. Alles, was im Code passiert, befindet sich in dem von TensorFlow bereitgestellten Standarddiagramm. Sie können wie folgt auf dieses Diagramm zugreifen:


 graph = tf.get_default_graph() 

Und so können Sie eine Liste aller Operationen in dieser Spalte erhalten:


 graph.get_operations() 

Ihr Diagramm ist jetzt leer. Wenn Sie den Namen jeder Operation drucken müssen, führen Sie den folgenden Code aus:


 for op in graph.get_operations(): print(op.name) 

Die Ausgabe ist wieder leer. In Zukunft werden wir nach dem Hinzufügen von Operationen zum Diagramm diesen Code verwenden, um deren Namen anzuzeigen.


1.2. Sitzungen bei TensorFlow


Das Diagramm definiert nur die Berechnungen (erstellt das Projekt), enthält jedoch keine Variablen und keine Werte, es sei denn, wir führen das Diagramm oder einen Teil des Diagramms in der Sitzung aus.


Sie können eine Sitzung wie folgt erstellen:


 sess=tf.Session() ... your code ... ... your code ... sess.close() 

Vergessen Sie nicht, dass Sie zum Starten einer Sitzung diese beenden oder den Block with ... als Beispiel verwenden müssen, zum Beispiel wie folgt:


 with tf.Session() as sess: sess.run(f) 

Der Vorteil dieses Ansatzes besteht darin, dass die Sitzung am Ende des with- Blocks automatisch geschlossen wird


1.3. Tensoren in TensorFlow


TensorFlow speichert Daten in Tensoren - mehrdimensionalen Arrays, die numPy-Arrays sehr ähnlich sind.


a) Konstanten sind Werte, die nicht geändert werden können. Sie sind wie folgt definiert:


 a=tf.constant(1.0) 

Wenn Sie jedoch versuchen, etwas auszugeben, erhalten Sie Folgendes:


 print(a) <tf.Tensor'Const:0' shape=() dtype=float32> print(a) Tensor("Const:0", shape=(), dtype=float32) 

Wie Sie sehen können, unterscheidet sich dies von anderen Programmiersprachen wie Python. Sie können die Konstante erst drucken oder darauf zugreifen, wenn Sie die Sitzung starten. Machen wir das:


 with tf.Session() as sess: print(sess.run(a)) 

Dieser Code gibt 1.0 aus


b) Variablen sind auch Tensoren, die Variablen in anderen Programmiersprachen ähneln:


 >>>b = tf.Variable(2.0,name="test_var") >>>b <tensorflow.python.ops.variables.Variable object at 0x7f37ebda1990> 

Im Gegensatz zu Konstanten können Variablen ihren Inhalt ändern. Variablen in TensorFlow müssen jedoch in einem separaten Initialisierungsvorgang initialisiert werden. Das Initialisieren aller Variablen kann recht zeitaufwändig sein, aber TensorFlow bietet einen Mechanismus zum gleichzeitigen Initialisieren aller Variablen:


 init_op = tf.global_variables_initializer() 

Jetzt müssen Sie den Initialisierungsvorgang starten, bevor Sie versuchen, auf die Variable zuzugreifen:


 with tf.Session() as sess: sess.run(init_op) print(sess.run(b)) 

Dieser Code gibt 2.0 aus
Wenn Sie jetzt versuchen, Vorgänge im Diagramm zu drucken


 graph = tf.get_default_graph() for op in graph.get_operations(): print(op.name) 

Sie erhalten folgende Ausgabe:


 Const test_var/initial_value test_var test_var/Assign test_var/read init 

Wie Sie sehen können, haben wir "a" als Const deklariert und es wurde dem Diagramm hinzugefügt. In ähnlicher Weise wurden für die Variable b viele test_var-Zustände zum TensorFlow-Diagramm hinzugefügt, z. B. test_var / initial_value, test_var / read usw. Sie können das gesamte Netzwerk mit TensorBoard visualisieren, einem Tool zum Visualisieren des TensorFlow-Diagramms und des Lernprozesses .


c) Platzhalter sind Tensoren, die darauf warten, mit Daten initialisiert zu werden. Sie werden für Daten verwendet, die nur bereitgestellt werden, wenn der Code tatsächlich in der Sitzung ausgeführt wird. Was auf den Platzhalter übertragen wird, ist ein Wörterbuch, das die Namen der Platzhalter und ihre Bedeutung enthält:


 a = tf.placeholder("float") b = tf.placeholder("float") y = tf.multiply(a, b) fd = {a: 2, b: 3} with tf.Session() as sess: print(sess.run(y, fd)) 

Dieser Code gibt 6.0 aus


1.4. Geräte in TensorFlow


TensorFlow verfügt über sehr leistungsstarke integrierte Funktionen, mit denen Sie Ihren Code auf GPU, CPU oder Clustern ausführen können. Sie haben die Möglichkeit, das Gerät auszuwählen, auf dem Sie Ihren Code ausführen möchten. Dies ist jedoch kein Grund zum Nachdenken, wenn Sie gerade erst mit TF beginnen.
Hier ist ein vollständiges Bild der Funktionsweise der Berechnungen in TensorFlow:
Bild


Teil 2. TensorFlow Tutorial mit einem einfachen Beispiel


In diesem Teil werden wir uns den Code zum Ausführen der linearen Regression ansehen. Schauen wir uns vorher einige der grundlegenden TensorFlow-Funktionen an, die wir im Code verwenden werden.


Erstellen einer zufälligen Normalverteilung:


Verwenden Sie random_normal , um zufällige Werte aus der Normalverteilung zu erstellen. In diesem Beispiel ist w eine Variable der Dimension 784 * 10 mit Zufallswerten mit einer Standardabweichung von 0,01.


 w=tf.Variable(tf.random_normal([784, 10], stddev=0.01)) 

Reduce_mean - Berechnet den Durchschnittswert eines Arrays


 b = tf.Variable([10,20,30,40,50,60],name='t') with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(tf.reduce_mean(b)) 

Dieser Code gibt 35 aus


argmax - sehr ähnlich zu argmax in Python. Ruft den Maximalwert vom Tensor entlang der angegebenen Achse ab.


 a=[ [0.1, 0.2, 0.3 ], [20, 2, 3 ] ] b = tf.Variable(a,name='b') with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(tf.argmax(b,1)) 

Drucken Sie ein Array ([2, 0]), das den Index des Maximalwerts in jeder der Zeilen a anzeigt.


Lineares Regressionsproblem


Problemstellung: Es gibt eine große Anzahl von Datenpunkten, die versuchen, eine gerade Linie mit ihnen abzugleichen. In diesem Beispiel erstellen wir 100 Datenpunkte und versuchen, die Linie mit ihnen abzugleichen.


2.1. Erstellen Sie einen Trainingsdatensatz


trainX enthält Werte zwischen -1 und 1 und trainY enthält den dreifachen Wert von trainX plus eine Zufallsvariable:


 import tensorflow as tf import numpy as np trainX = np.linspace(-1, 1, 101) trainY = 3 * trainX + np.random.randn(*trainX.shape) * 0.33 

2.2. Platzhalter


 X = tf.placeholder("float") Y = tf.placeholder("float") 

2.3. Modellierung


Das lineare Regressionsmodell hat die Form

Ymodel=wx


- Wir müssen den Wert von w berechnen. Lassen Sie uns w auf Null initialisieren und ein Modell erstellen, um dieses Problem zu lösen. Wir definieren die Kostenfunktion als

(Y-y__Modell) ^ 2


TensorFlow enthält viele Optimierer, die Gradienten nach jeder Iteration berechnen und aktualisieren und versuchen, die angegebene Kostenfunktion zu minimieren. Wir werden eine Lernoperation mit GradientDescentOptimizer definieren, um unsere Kostenfunktion bei einer Lerngeschwindigkeit von 0,01 zu minimieren. Dann führen wir diese Lernoperation in einer Schleife aus.
 w = tf.Variable(0.0, name="weights") y_model = tf.multiply(X, w) cost = (tf.pow(Y-y_model, 2)) train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost) 

2.4. Schulung


Bis zu diesem Punkt haben wir nur ein Diagramm definiert. Es wurden keine Berechnungen durchgeführt, keine der TensorFlow-Variablen spielt eine Rolle. Um dieses Diagramm auszuführen, müssen wir eine Sitzung erstellen und ausführen. Vorher müssen wir eine Initialisierungsoperation für alle Variablen erstellen:


 init = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init) for i in range(100): for (x, y) in zip(trainX, trainY): sess.run(train_op, feed_dict={X: x, Y: y}) print(sess.run(w)) 

Beachten Sie, dass als erstes die Variablen durch Aufrufen von init in session.run () initialisiert wurden. Später führen wir train_op aus und füttern ihr feed_dict . Schließlich drucken wir den Wert von w (wieder in sess.run ()), der bei 3 liegen sollte.


Übung:


Wenn Sie nach diesem Code eine neue Sitzung erstellen und versuchen, w zu drucken, was wird ausgegeben?


 with tf.Session() as sess: sess.run(init) print(sess.run(w)) 

Ja, Sie haben richtig verstanden, 0.0 wird angezeigt. Sobald wir die zuvor erstellte Sitzung verlassen haben, sind alle Vorgänge nicht mehr vorhanden.


Ich hoffe, dieses Tutorial gibt Ihnen einen schnellen Einstieg in TensorFlow. Bitte zögern Sie nicht, Ihre Fragen in den Kommentaren zu stellen. Der vollständige Code kann hier heruntergeladen werden .

Source: https://habr.com/ru/post/de465745/


All Articles