Deep Learning: Erste Schritte mit tensorFlow

Die Firma Google beschäftigt sich sehr viel im Bereich KI und da im Speziellen mit Deep Learning Algorithmen. Dabei ist mal wiedre ein Abfallprodukt entstanden, das sie der Allgemeinheit zur Verfügung gestellt hat, nämlcih die Bibliothek tensorFlow. Mit Hilfe dieser Bibliothek realisiert Google viele Projekte im KI Bereich, wie verbesserte Übersetzung von Texten oder das Spiel GO. Mit letzterem haben Sie sogar bewiesen, dass sie ziemlich Erfolgreich in dem Thema unterwegs sind.

Will man sich nun etwas näher mit Deep Learning und Neuronalen Netzen auseinandersetzen, hilft einem diese Bibliothek weiter, da sie viele Algorithmen und Datenstrukturen bereits enthält. Ein mehrschichtiges Neuronales Netz kann durch eine Matrix repräsentiert werden. Komplexere Netze in einer dreidimensionalen Matrix, sogenannte Tensoren. Diese werden in tensorFlow in einer einem Grafen mit Operatoren verknüpft. Dabei entsprechen Knoten den (Tensor) Operatoren und Verbindungen dem Datenfluss. So entsteht der Name tensorFlow.

Um tensorFlow zum Laufen zu bekommen, muss erst einmal eine aktuelle Version von Python 3.6 installiert werden. Nach der Installation steht das python install program pip zur Verfügung. Sollte ein Proxy benötigt werden, so muss vorher die Umgebungsvariable https_proxy=http://web-proxy.mydomain.com:port gesetzt sein. Alle nachfolgenden Befehle werden in einer Shell ausgeführt. Sinnvoll ist es python Bibliotheken in einer virtuellen Umgebung zu installieren. Deswegen holen wir erstmal die Bibliothek pip install virtualenv.  Nach deren Installation soll ein neues Arbeitsverzeichnis tf angelegt werden in dem wir arbeiten werden, richten es mit virtualenv tf ein und aktivieren es mit tf\Scripts\activate (Linux: source tf/bin/activate). In dem nun aktuellen Kommandofenster kann mit pip install tensorflow die Software tensorFlow installiert werden ohne andere Python Installationen zu beeinflussen. mit deactivate geht es wieder zurück. Mit pip install tensorflow-gpu wird eine GPU-Beschleunigte Variante installiert. Dies setzt eine installierte CUDA und CUDA Bibliothek und eine NVIDIA Grafikkarte vorraus.

Mit dem kleinen Python Programm kann man testen, ob tensorFlow funktioniert:

import tensorflow as tf
hello = tf.constant('Hello World')
sess = tf.Session()
print(sess.run(hello))

Das Programm in eine Datei in tfTest.py speichern und in der Kommandozeile mit python tfTest.py starten. Wenn der Text Hallo World erscheint, ist tensorFlow richtig installiert worden.

Und nun noch ein kurzes Beispiel, wie man mit tensorFlow Handschriften klassifizieren kann. Dazu gibt es eine grosse Handschriftendatenbank MNIST, die zum Trainieren verwendet werden kann.

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

NUM_STEPS = 1000
MINIBATCH_SIZE = 100

data = input_data.read_data_sets("data/", one_hot=True)

x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))

y_true = tf.placeholder(tf.float32, [None, 10])
y_pred = tf.matmul(x, W)

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
  logits=y_pred, labels=y_true))

gd_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

correct_mask = tf.equal(tf.argmax(y_pred, 1), tf.argmax(y_true, 1))
accuracy = tf.reduce_mean(tf.cast(correct_mask, tf.float32))

with tf.Session() as sess:
  # Train
  sess.run(tf.global_variables_initializer())

  for _ in range(NUM_STEPS):
    batch_xs, batch_ys = data.train.next_batch(MINIBATCH_SIZE)
    sess.run(gd_step, feed_dict={x: batch_xs, y_true: batch_ys})

  # Test
  ans = sess.run(accuracy, feed_dict={x: data.test.images,
  y_true: data.test.labels})

print ("Accuracy: {:.4}%".format(ans*100))

(Achtung: bei python bitte aufpassen, dass die Einrücktiefe einen Scope definiert, also was zusammengehört)

Links:
https://www.python.org/downloads/
https://de.wikipedia.org/wiki/Tensor
https://www.tensorflow.org/
https://github.com/tensorflow/tensorflow
http://developer.nvidia.com/cuda-downloads
http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html

https://en.wikipedia.org/wiki/MNIST_database

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.