How-To

Neuronale Netze entwickeln: Erste Schritte mit TensorFlow

(Abbildung: Shutterstock / Tatiana Shepeleva)

Neuronale Netze sind zu einer der wichtigsten Zukunftstechnologien der Informatik ­geworden, Deep Learning wird zunehmend auch für Webentwickler relevant. Unsere Einführung in das Framework TensorFlow zeigt die ersten Schritte in der Disziplin.


Es müssen nicht immer gleich selbstfahrende Autos und neue Krebstherapien sein: Machine Learning zeigt sein Potenzial ­bereits bei vergleichsweise überschaubaren Alltagsheraus­forderungen, etwa bei Übersetzungen, Routenoptimierung oder automatisierten Vorschlägen basierend auf Nutzerinteressen.

Das Ende 2015 erstmals veröffentlichte TensorFlow zählt heute zu den beliebtesten und am meisten genutzten ­Machine-Learning- beziehungsweise Deep-Learning-Frameworks. Ursprünglich von der Alphabet-Tochter Deepmind entwickelt, ist die Software seit Ende 2015 Open Source und wird aktiv von knapp 2.000 ­Kontributoren weiterentwickelt. Am ­Beispiel einer Bildklassifizierung des CIFAR-10-Datensatzes erklären wir grundlegende Begriffe bei der Arbeit mit neuro­nalen Netzen und zeigen die Verwendung der kommenden ­TensorFlow-2.0-API. Mit wenigen Schritten bringen wir dabei ­einem Netz bei, Bilder vorhandenen Kategorien zuzuordnen.

TensorFlow 2.0 bietet einen leichten Einstieg durch auf­geräumte API, Eager Execution und Fokussierung auf die ­Keras-API. Zum Zeitpunkt der Erstellung dieses Artikels ist es in der frühen Version 2.0.0-alpha0 verfügbar. In dieser Fassung kann es bei der Nutzung der API noch zu Fehlern sowie Änderungen der Schnittstellen kommen.

Vorbereitung

Zur Nutzung von TensorFlow und der Codebeispiele aus ­diesem Artikel wird Python in Version 3.5, 3.6 oder 3.7 benötigt. ­Sobald Python erfolgreich installiert wurde, kann TensorFlow 2.0 ­mithilfe von Pip installiert werden. Hierzu muss man lediglich eine Konsole wie Terminal (Mac), Powershell (Windows) oder Bash (Linux) öffnen und folgenden Befehl ausführen:

pip install --upgrade tensorflow==2.0.0alpha0

Mit dem gezeigten Befehl wird die CPU-Variante von TensorFlow installiert. Das bedeutet, alle Operationen werden lediglich ­mithilfe der CPU berechnet. Für das Training des simpel gehalten gezeigten Beispiels ist das ausreichend. Will man allerdings ­größere neuronale Netze trainieren, empfiehlt sich eine Installation der GPU-Variante. Das Training auf der GPU verbessert in der Regel die Ausführungszeit drastisch. Eine detaillierte Anleitung zur Installation der GPU-Variante von TensorFlow findet sich auf der Projektwebsite. Ausgerüstet mit unseren Werkzeugen, ­können wir jetzt an die Inhalte des Trainings gehen.

Das „Hello World“ für Machine Learning

In der Bildklassifizierung werden Bilder verschiedenen Kate­gorien zugeordnet. Die Kategorien können einer festge­legten ­Definition entsprechen (Auto, Frosch, Schiff …) oder auch ­dynamisch, basierend auf der Ähnlichkeit der Bilder, ermittelt werden. Wir betrachten in diesem Artikel die Zuteilung in festgelegte Kategorien.

Der Datensatz CIFAR-10 ist einer der Standarddaten­sätze im Bereich der Bildklassifizierung und ideal für unseren ­Einstieg. Man kann ihn mit einem „Hello World“ für Machine ­Learning ­vergleichen. ­TensorFlow bietet für den Datensatz bereits vor­gefertigte Methoden für den Download und das Extrahieren der Daten.

CIFAR-10 besteht aus 60.000 ­Farb­bildern mit einer Größe von 32 x 32 Pixeln und ist einer der Standard­datensätze im Bereich der Bildklassifizierung. (Screenshot: cs.toronto.edu)

CIFAR-10 besteht aus 60.000 ­Farb­bildern mit einer Größe von 32 x 32 Pixeln und ist einer der Standard­datensätze im Bereich der Bildklassifizierung. (Screenshot: cs.toronto.edu)

CIFAR-10 besteht aus 60.000 Farbbildern mit einer Größe von 32 x 32 Pixeln. Die Herausforderung besteht darin, jedem dieser Bilder aus zehn möglichen Klassen die korrekte Klasse ­zuzuordnen.

In Python kann der Datensatz mithilfe der folgenden Befehle geladen werden:

import tensorflow as tf

cifar10 = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0

Die Variablen x_train und x_test enthalten die Bilder des ­Datensatzes als Numpy-Arrays, die Variablen y_train und ­y_test die korrekten Klassen, also die Labels, für die ent­sprechenden Bilder. Die Bilder in den Numpy-Arrays haben drei Dimensionen: Höhe, Breite und die Farbkanäle (RGB). Die ­Variable x_train enthält 50.000 Bilder, somit ergeben sich für die ­Größen der Dimensionen die Werte [50000, 32, 32, 3]. Die restlichen 10.000 Bilder befinden sich in x_test.

Wozu die Aufteilung eines Datensatzes in Trainingsbilder und Testbilder? Sie erlaubt es, eine Evaluierung des Trainingsfortschritts vorzunehmen. Würde man für die Evaluierung die gleichen Bilder nutzen, mit denen auch trainiert wurde, ­könnte man nicht unterscheiden, ob die Daten lediglich „auswendig­gelernt“ wurden, oder ob –, wie gewünscht – eine Abstraktion der Merkmale einer Klasse stattgefunden hat. Beispielsweise, dass ein Auto vier Reifen und ein Motorrad zwei Reifen hat. Ohne die Fähigkeit einer Abstraktion der Merkmale kann das Trainings­ergebnis nicht auf neue Bilder angewendet werden, sondern würde die erreichte Trefferquote nur beim bereits bekannten Bild­fundus zeigen.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung