Direkt zum Hauptinhalt

TensorFlow™ auf Databricks

Illustration

Variablen

TensorFlow stellt eine Möglichkeit dar, Berechnungen darzustellen, ohne sie tatsächlich auszuführen, sondern erst bei Bedarf. In diesem Sinne handelt es sich um eine Form des Lazy Computing, die einige große Verbesserungen bei der Ausführung von Code ermöglicht:
  • Schnellere Berechnung komplexer Variablen
  • Verteilte Berechnung über mehrere Systeme, einschließlich GPUs.
  • Reduzierte Redundanz bei einigen Berechnungen

Sehen wir uns das in der Praxis an. Zunächst ein sehr einfaches Python-Skript:

 

x = 35
y = x + 5
print(y)

 

Dieses Skript besagt im Grunde nur: „Erstelle eine Variable x mit dem Wert 35, setze den Wert einer neuen Variablen y auf diesen Wert plus 5, was derzeit 40 ist, und drucke ihn aus“. Der Wert 40 wird ausgegeben, wenn Sie dieses Programm ausführen. Wenn Sie mit Python nicht vertraut sind, erstellen Sie eine neue Textdatei mit dem Namen basic_script.py und kopieren Sie diesen Code hinein. Speichern Sie sie auf Ihrem Computer und führen Sie sie aus mit:

python basic_script.py

Beachten Sie, dass der Pfad (d. h. basic_script.py) auf die Datei verweisen muss. Wenn sie sich also im Ordner Code befindet, verwenden Sie Folgendes:

python Code/basic_script.py

Vergewissern Sie sich außerdem, dass Sie die virtuelle Anaconda-Umgebung aktiviert haben. Unter Linux sieht Ihre Eingabeaufforderung dadurch etwa so aus:

(tensorenv)username@computername:~$

Wenn diese funktioniert, konvertieren wir sie in ein TensorFlow-Äquivalent.

 

import tensorflow as tf

x = tf.constant(35, name='x')
y = tf.Variable(x + 5, name='y')

print(y)

 

Nachdem Sie dies ausgeführt haben, erhalten Sie eine ziemlich ungewöhnliche Ausgabe, etwa <tensorflow.python.ops.variables.Variable object at 0x7f074bfd9ef0>. Dies ist eindeutig nicht der Wert 40.

Der Grund dafür ist, dass unser Programm tatsächlich etwas ganz anderes macht als zuvor. Dieser Code führt nämlich Folgendes aus:

  1. Importiere das Tensorflow-Modul und nenne es tf.
  2. Erstelle einen konstanten Wert namens x und gib ihm den numerischen Wert 35.
  3. Erstelle eine Variable mit dem Namen y und definiere sie als die Gleichung x + 5.
  4. Drucke das Gleichungsobjekt für y aus.

Der kleine aber feine Unterschied besteht darin, dass y nicht wie zuvor „der aktuelle Wert von x + 5“ zugewiesen wird. Stattdessen handelt es sich im Grunde genommen um eine Gleichung, die besagt: „Wenn diese Variable berechnet ist, nimm den Wert von x (wie er dann ist) und addiere 5 dazu.“ Die Berechnung des Werts von y wird im obigen Programm nie tatsächlich durchgeführt.

Lassen Sie uns das beheben:

 

import tensorflow as tf

x = tf.constant(35, name='x')
y = tf.Variable(x + 5, name='y')

model = tf.global_variables_initializer()

with tf.Session() as session:
    session.run(model)
    print(session.run(y))

 

Wir haben die Anweisung print(y) entfernt und haben stattdessen Code, der eine Sitzung erstellt und tatsächlich den Wert von y berechnet. Das ist zwar eine Menge Boilerplate, funktioniert aber wie folgt:

  1. Importiere das Tensorflow-Modul und nenne es tf.
  2. Erstelle einen konstanten Wert namens x und gib ihm den numerischen Wert 35.
  3. Erstelle eine Variable mit dem Namen y und definiere sie als die Gleichung x + 5.
  4. Initialisiere die Variablen mit tf.global_variables_initializer() (wir werden darauf später näher eingehen).
  5. Erstelle eine Sitzung zur Berechnung der Werte.
  6. Führe das in Schritt 4 erstellte Modell aus.
  7. Führe einfach die Variable y aus und gib ihren aktuellen Wert aus.

In Schritt 4 oben geschieht etwas Magisches. In diesem Schritt wird ein Graph der Abhängigkeiten zwischen den Variablen erstellt. In diesem Fall hängt die Variable y von der Variablen x ab und dieser Wert wird durch Addition von 5 transformiert. Beachten Sie, dass dieser Wert erst in Schritt 7 berechnet wird, da bis dahin nur Gleichungen und Beziehungen berechnet werden.

1) Konstanten können auch Arrays sein. Sagen Sie voraus, was dieser Code bewirken wird, und führen Sie ihn dann zur Bestätigung aus:

 

import tensorflow as tf


x = tf.constant([35, 40, 45], name='x')
y = tf.Variable(x + 5, name='y')


model = tf.global_variables_initializer()

with tf.Session() as session:
    session.run(model)
    print(session.run(y))

 

2) Erzeugen Sie ein NumPy-Array mit 10.000 Zufallszahlen (genannt x) und erstellen Sie eine Variable, die die Gleichung speichert.

y = 5x2 − 3x+15

Sie können das NumPy-Array mit dem folgenden Code generieren:

 

import numpy as np
data = np.random.randint(1000, size=10000)

 

Diese data-Variable kann dann anstelle der Liste aus Frage 1 oben verwendet werden. NumPy sollte normalerweise für größere Listen/Arrays von Zahlen verwendet werden, da es wesentlich speichereffizienter und schneller zu berechnen ist als Listen. Es bietet außerdem eine beträchtliche Anzahl von Funktionen (z. B. die Berechnung des Mittelwerts), die normalerweise für Listen nicht verfügbar sind.

3) Sie können Variablen auch in Schleifen aktualisieren, die wir später für Machine Learning verwenden werden. Sehen Sie sich diesen Code an und sagen Sie voraus, was er tun wird (führen Sie ihn dann zur Bestätigung aus):

 

import tensorflow as tf


x = tf.Variable(0, name='x')

model = tf.global_variables_initializer()

with tf.Session() as session:
    session.run(model)
    for i in range(5):
        x = x + 1
        print(session.run(x))
        

 

4) Erstellen Sie mit dem Code aus (2) und (3) oben ein Programm, das den „gleitenden“ Durchschnitt der folgenden Codezeile berechnet: np.random.randint(1000). Anders ausgedrückt: Führen Sie die Schleifen weiter und rufen Sie in jeder Schleife genau einmal np.random.randint(1000) auf. Speichern Sie den aktuellen Durchschnitt in der Variable, die jede Schleife aktualisiert.

5) Verwenden Sie TensorBoard, um den Graphen für einige dieser Beispiele zu visualisieren. Um TensorBoard auszuführen, verwenden Sie den Befehl: tensorboard --logdir=path/to/log-directory

 

import tensorflow as tf

x = tf.constant(35, name='x')
print(x)
y = tf.Variable(x + 5, name='y')

with tf.Session() as session:
    merged = tf.summary.merge_all()
    writer = tf.summary.FileWriter("/tmp/basic", session.graph)
    model =  tf.global_variables_initializer()
    session.run(model)
    print(session.run(y))

 

Um mehr über TensorBoard zu erfahren, sehen Sie sich unsere Lektion zur Visualisierung an.