© Phonlamai Photo/Shutterstock.com
TensorFlow 2.0 bietet einen guten Einstieg in Deep Learning

Ausgereift: TensorFlow 2.0


TensorFlow ist eines der wichtigsten Frameworks im Deep-Learning-Bereich. Die Architektur wurde für Version 2.0 gründlich überarbeitet. Die ausgereifte Veröffentlichung bietet weitreichende Nutzungsmöglichkeiten für das Deep Learning.

Langsam, aber sicher etabliert sich Machine Learning in vielen Unternehmen und wird ein fester Bestandteil in einem Toolrepertoire, wenn Daten analysiert und über prädiktive Algorithmen Prozesse automatisiert werden sollen. Gerade bei der Bild- und Spracherkennung ist Deep Learning, ein Unterbereich des Machine Learning, ein wichtiger Enabler. Immer zahlreicher werden die Veröffentlichungen von quelloffenen Frameworks und Bibliotheken, welche die Verwendung von Deep Learning vereinfachen sollen. Eines dieser Frameworks trägt den Namen TensorFlow [1] und hat seit seiner Veröffentlichung 2015 viele Anhänger gefunden, insbesondere in der Forschung an Hochschulen sowie in der Praxis der Industrie und in der Medizin. So können zum Beispiel mit speziell ausgelegten Algorithmen Vorabtests durchgeführt werden, um Hautkrebs vorzeitig zu erkennen oder um Handschriftzeichen zu digitalisieren. Die Möglichkeiten mit TensorFlow sind äußerst vielseitig: Dabei sind es methodisch betrachtet unterschiedliche Konzepte künstlicher neuronaler Netze, die die Umsetzung solcher Anwendungen ermöglichen. TensorFlow ist darüber hinaus ein Tool in Form einer Programmierbibliothek, die die Implementierung derartiger neuronaler Netze ermöglicht.

Obwohl TensorFlow eines der beliebtesten ML Frameworks ist, ist die Nutzung auf Grund der Low-Level-Programmierung für den ungeübten Anwender oder für Einsteiger sehr irreführend und unhandlich. Und dies war einer der Hauptgründe für Google, eine reifere Version von TensorFlow in der Version 2.0 freizugeben. Dabei wurde eine Bereinigung der APIs vorgenommen und diverse Modi, beispielsweise Eager Execution, wurden als Standard gesetzt, um die Programmierung zu vereinfachen. Der Fokus von TensorFlow 2.0 liegt eindeutig darin, dass dessen Verwendung intuitiver und schneller sein soll.

Was ist neu in TensorFlow 2.0?

TensorFlow 1.x ist ein Framework zur datenstromorientierten Programmierung. Dabei wird in einer Konstruktionsphase ein Berechnungsgraph erstellt, der mit Knoten und Kanten beschrieben wird. Die Knoten beinhalten die Operationen, und in den Kanten fließen die Daten zwischen den einzelnen Knoten. Danach wird der Graph in der Ausführungsphase mit den Daten gefüllt. Der Vorteil der datenstromorientierten Programmierung ist zum einen die Möglichkeit der Parallelisierung von Operationen, der verteilten Ausführung auf verschiedenen Systemen und Geräten, die Skalierbarkeit und die hohe Portabilität. All diese Vorteile haben unbestreitbar ihren Mehrwert. Besonders wenn es auf Performance ankommt, können diese Eigenschaften ausgespielt werden, um ein Modell zu entwickeln, das für den jeweiligen Anwendungszweck optimiert ist.

Für eine schnelle Anwendung, zum Beispiel für einen einfachen Test oder einen schnellen Modellaufbau, ist TensorFlow 1.x jedoch nicht die beste Wahl. Auch ist die Separierung zwischen Konstruktions- und Ausführungsphase für den Großteil der Python-Anwender ungewöhnlich, da sie an imperative Programmierung gewöhnt sind. Ebenfalls sehr verwirrend ist die Tatsache, dass Funktionen doppelt auftauchen, was die Benutzung und Wahl von Funktionen inkonsistent und redundant gestaltet (Tabelle 1).

Stärken

Schwächen

skalierbar

Low-Level-Programmierung

parallelisierbar

redundante Funktionen

große Community

Cluster Loads

viele Plattformen

nicht Pythonic

Open Source (Google)

schwierig zu debuggen

Tabelle 1: Stärken und Schwächen von TensorFlow 1.x

Mit TensorFlow 2.0 wurden diese Schwächen nicht nur bereinigt, zusätzlich ist Keras nun das standardisierte und empfohlene High Level API. Auch wurde der Eager-Execution-Modus, der mit Version 1.5 vorgestellt wurde, als Default eingestellt. Er erlaubt eine imperative Programmierung ohne Ausführung von Session.run(). Das erleichtert das Verstehen und Debuggen von TensorFlow-Code deutlich. Ein weiterer Punkt, um die Arbeitsweise zu vereinfachen, ist der Wegfall von globalen Namensräumen (Namespaces). Wenn Größen für den Graphen definiert und später gelöscht werden, bleiben sie immer noch im Standardgraph. Das führt zu Komplikationen und Missverständnissen beim Aufruf von Größen mit ähnlichen Namen. Daher wurde dieser Mechanismus in TensorFlow 2.0 entfernt (Tabelle 2).

Im Folgenden wird Keras vorgestellt, mit dem ein einfaches neuronales Netz erstellt werden soll. Danach wird auf die neuen Defaultmechanismen eingegangen, die in einem fortgeschrittenen Beispiel eingesetzt werden sollen.

Schwächen in TensorFlow 1.x

Verbesserung in TensorFlow 2.0

Low-Level-Programmierung

Keras als High Level Programming

doppelte Funktionen

eindeutige Zuteilung der Funktionen

Cluster Loads

Eager Execution

nicht Pythonic

Funktionen statt Sessions

schwierig zu debuggen

Tabelle 2: TensorFlow-Versionen im Vergleich

Keras in TensorFlow

Keras ist eine eigenständige Machine-Learning-Bibliothek für Python, die es ermöglicht, vordefinierte Modelle einfach und nutzerfreundlich zu erstellen. Ursprünglich war Keras eine eigene Bibliothek, die für die B...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang