Zum Inhalt springen

TensorFlow: Ein umfassendes Tutorial für Data Scientists

  • Python

TensorFlow, kurz TF, ist ein Framework für Deep Learning und Künstliche Intelligenz, das von Google entwickelt und ursprünglich nur intern verwendet wurde. Seit einigen Jahren bereits kann es jedoch Open-Source in vielen Programmiersprachen, wie bspw. Python, genutzt werden.

Was ist TensorFlow?

TensorFlow ist ein Open-Source Framework von Google zur Erstellung von Machine Learning Modellen. Die Software ist zwar in C++ geschrieben, ansonsten jedoch sprachunabhängig, kann also in verschiedenen Programmiersprachen sehr einfach genutzt werden. Für viele Anwender hat sich die Bibliothek mittlerweile zum Standard für Machine Learning entwickelt, da gängige Modelle vergleichsweise simpel aufgebaut werden können. Zusätzlich sind auch state-of-the-art ML-Modelle über TF nutzbar, wie beispielsweise verschiedene Transformer.

TensorFlow Logo
TensorFlow Logo

Über TensorFlow Keras (High Level API) können zusätzlich individuelle Neuronale Netze aufgebaut werden, ohne dass die einzelnen Schichten von Hand programmiert werden müssen. Dadurch ist TF für verschiedenste Anwendungen nutzbar und anpassbar. Darüber hinaus bietet es auf der eigenen Website eine Vielzahl an kostenlosen Einführungskursen und Beispielen, die die Arbeit mit dem Framework weiter erleichtern.

Was sind Tensoren?

Der Name TensorFlow mag im ersten Moment etwas komisch erscheinen, da es keinen direkten Zusammenhang zu Machine Learning gibt. Jedoch stammt der Name von den sogenannten Tensoren, die zum Training von Deep Learning Modellen genutzt werden und deshalb den Kern von TF ausmachen.

Der Tensor ist eine mathematische Funktion aus der linearen Algebra, die eine Auswahl von Vektoren auf einen Zahlenwert abbildet. Das Konzept stammt ursprünglich aus der Physik und wurde anschließend auch in der Mathematik verwendet. Das wohl prominenteste Beispiel, welches das Konzept der Tensoren nutzt, ist die allgemeine Relativitätstheorie.

Verschiedene Arten von Tensoren
Verschiedene Arten von mehrdimensionalen Arrays | Quelle: Autor

Im Bereich des Machine Learnings werden Tensoren als Repräsentationen für viele Anwendungen genutzt, wie beispielsweise Bilder oder Videos. Dadurch lassen sich viele, teilweise mehrdimensionale Informationen in einem Objekt abbilden. Ein Bild besteht beispielsweise aus einer großen Anzahl von einzelnen Pixeln, deren Farbenwert wiederum sich aus der Überlagerung von drei Farbschichten (zumindest bei RGB Bildern) zusammensetzt. Dieses komplexe Konstrukt lässt sich mit einem Tensor kompakt darstellen.

Wie funktioniert TensorFlow?

Nachdem wir nun verstanden haben, was Tensoren sind und welchen Einfluss sie im Machine Learning haben, beschäftigen wir uns nun mit dem zweiten Teil des Namens, nämlich “Flow”. In TF werden die gebauten Modelle nämlich als Dataflow dargestellt, genauer gesagt in einem gerichteten Graphen. Das heißt jedes Modell, welches wir in TensorFlow bauen, kann umgewandelt werden in einen Graphen, der gerichtet ist, also jeder Pfeil kann nur in eine Richtung durchlaufen werden.

An jedem Knoten im Graphen wird eine Rechenoperation ausgeführt. Am Beispiel eines Neuronalen Netzwerks bedeutet das beispielsweise, dass die Knoten die einzelnen Schichten sind an denen Rechenoperationen stattfinden. Die Kanten hingegen sind die bereits beschriebenen Tensoren, die sich von einem Knoten zum nächsten bewegen.

Dieser Aufbau hat sich jedoch seit 2019 etwas verändert, da in diesem Jahr die zweite Version herausgekommen ist, die einige, auch grundlegende, Funktionalitäten verändert hat. Seitdem wird die High-Level-API Keras genutzt, die in der ersten Version noch ein eigenständiges Modul war. Diese bietet eine ziemlich einfache Möglichkeit ein Neuronales Netzwerk einfach durch Aufruf der einzelnen Schichten zu bauen und machte TF dadurch benutzerfreundlicher.

# Building a neural network by defining the single layers 
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10))

Zusätzlich wurde TF durch das Update auch deutlich performanter, um die komplexeren, modernen Machine Learning Modelle handhaben zu können. Jedoch gibt es keine Kompatibiltät zwischen den beiden Versionen, sodass alter Code zwingend umgeschrieben werden muss, um in TF 2.0 zu funktioneren. Jedoch wird die erste Version auch weiterhin unterstützt, sodass man den Code auch in dieser Version ausführen kann, wenn auch ohne die neuen Features.

Wie installiert man die TensorFlow Python Version?

TensorFlow kann in Python relativ einfach, wie auch viele andere Module, mit einem Terminalbefehl installiert werden. In einem Jupyter Notebook muss dafür noch zusätzlich ein “!” vor den Befehl gestellt werden, damit dieser als Terminal Aufruf erkannt wird:

!pip install tensorflow

Jedoch gibt es bei TF noch einige Besonderheiten, weshalb dieser allgemeine Installtionsbefehl möglicherweise nicht funktioniert bzw. nicht optimal ist.

macOS

Auf dem Apple-Betriebssystem macOS kann es mit der normalen Installation zu Problemen kommen, insbesonder dann, wenn die neuen Apple-Prozessoren M1 oder M2 verbaut sind. Um TF so zu installieren, dass es für diese Mac Prozessoren optimiert ist, wird der folgende Befehl genutzt:

!pip install tensorflow-macos

Zusätzlich wird auch noch ein weiteres Plugin benötigt. Die ausführliche Anleitung zur Installation von TF auf macOS findet man auf der Apple Website.

Windows & Ubuntu ohne GPU

Auf Windows und Ubuntu funktioniert die bereits beschriebene grundlegende Installation. Jedoch ist diese Version mit CUDA bereits für dedizierte (externe) Grafikkarten optimiert. Falls man diese GPUs nicht nutzen will oder einfach keine externe GPU verbaut hat, kann man auch direkt nur die CPU Version von TF installieren:

!pip install tensorflow-cpu

Jedoch hat das Training von Neuronalen Netzwerken mit CPUs natürlich Performanceeinbußen im Vergleich zu einer leistungsstarken GPU.

Wie ist die Architektur von TF aufgebaut?

Die Architektur von TensorFlow unterstützt viele Systeme und Anwendungen, sodass auch Modelle in Web- oder mobilen Umgebungen genutzt werden können.

Im Training bietet TF die Möglichkeit eigene Datensätze einzulesen und sie in optimierte Datentypen umzuwandeln. Zusätzlich oder alternativ können auch vorbereitete Datensätze aus dem TensorFlow Hub bezogen werden oder schon ein ganzes, vorbereitetes Modell geladen werden. Beim Modellaufbau gibt es dann entweder die Möglichkeit ein eigenes Modell mit der High-Level API Keras aufzubauen oder sogenannte Premade Estimators zu nutzten, welche bereits vordefinierte Modelle für bestimmte Anwendungsfälle liefern.

Das Training selbst kann dann relativ flexibel auf verfügbare Komponenten verteilt werden. TensorFlow unterstützt das Training von Neuronalen Netzwerken auf dem Prozessor (CPU), auch wenn dies in den meisten Fällen nicht sehr performant ist. Wenn möglich kann man ein Modell auch auf der Graphics Processing Unit (GPU) trainieren lassen, um möglichst kurze Trainingszeiten zu haben. Wenn man das Machine Learning Modell in Google Colab trainieren will, gibt es auch die Möglichkeit die sogenannten Tensor Processing Unit (TPU) zu nutzen. Das sind spezielle Prozessoren, die auf Tensorberechnungen optimiert wurden und somit ideal zur Anwendung im Machine Learning sind.

TensorFlow Architektur | Quelle: TensorFlow Blog

Nachdem das Modell fertig trainiert wurde, kann es abgespeichert werden und für neue Vorhersagen genutzt werden. Damit es in den verschiedensten Anwendungsfällen genutzt werden kann, bietet TensorFlow verschiedenste Möglichkeiten des Deployments. Unter anderem kann es in anderen Programmiersprachen, wie C oder Java genutzt werden. Mit TensorFlow Serving wird ein leistungsstarkes System zur Verfügung gestellt, das die Möglichkeit bietet die Modelle entweder in der Cloud oder auf On-Premise Servern. Zusätzlich gibt es auch die Option ein Modell über TensorFlow Lite auf Mobilgeräten verfügbar zu machen, was wir uns im nächsten Kapitel noch genauer anschauen werden.

Wofür kann man TensorFlow Lite nutzen?

Mobile Endgeräte besitzen nur selten genügend Leistung, um Vorhersagen von bereits trainierten Neuronalen Netzwerken berechnen zu können. Der kleine Bauraum macht es nicht möglich leistungsfähige Prozessoren zu verbauen und schon gar nicht externe GPUs. Jedoch nutzen heutzutage viele Anwender ihr Handy fast öfters als einen Laptop oder Computer, sodass es für viele Unternehmen fast unumgänglich ist ihre Machine Learning Modelle auch für mobile Endgeräte zu deployen.

Der Fingerabdrucksensor oder die Gesichtserkennung von Smartphones beispielsweise nutzen Machine Learning Modelle, um die Klassifizierung durchzuführen. Diese Features müssen auch ohne Internetzugang funktionieren, damit das Handy auch im Flugmodus benutzbar ist. Deshalb sind die Hersteller gezwungen, die Berechnung des Modells auf dem Gerät durchzuführen.

Dabei hilft TensorFlow Lite, das spezielle, für mobile Geräte optimierte Machine Learning Modelle bereitstellt. Dazu trainiert man ein beliebiges Modell wie gewohnt in TF und konvertiert es dann mithilfe von TensorFlow Lite in eine mobilgerät-freundliche Version. Dabei kann auch die Modellgröße und -komplexität reduziert werden, um sicherzustellen, dass es schnell berechnet werden kann. Diese Vereinfachung führt zwar zu einer Verschlechterung der Genauigkeit, das wird jedoch in vielen Fällen in Kauf genommen, um dadurch die Berechnungszeiten zu verbessern.

Welche Modelle bringt TF mit?

Neben einigen anderen Vorteilen wird TensorFlow auch deshalb so häufig genutzt, da es viele state-of-the-art Machine Learning Modelle mitbringt, die mit nur wenigen Zeilen Code genutzt werden können. Diese sind teilweise schon vortrainiert und können auch ohne Training für Vorhersagen genutzt werden (auch wenn das nur sehr selten Sinn macht).

Zu den bekanntesten Modellen zählen unter anderem:

  • Verschiedene Deep Neural Network Schichten: Die Keras API bietet die gängigsten Schichten, um viele Arten von Deep Neural Networks schnell und einfach aufbauen zu können. Dazu zählen beispielsweise Convolutional Neural Networks oder Long Short-Term Memory (LSTM) Modelle.
  • Transformer Modelle: Für Natural Language Processing führt aktuell kein Weg an Transformer Modellen, wie BERT etc., vorbei. Wenn man diese jedoch von Grund auf aufbauen will, benötigt man viele Daten und sehr viel Rechenleistung. Über TensorFlow ist eine Vielzahl dieser Modelle bereits vortrainiert verfügbar. Diese können mit vergleichsweise wenigen Daten und erheblich weniger Aufwand auf die Anwendung “fine-getuned” werden.
  • Residual Networks (RESNet): Diese Modelle werden in der Bilderkennung verwendet und sind auch votrainiert über TensorFlow verügbar.
  • Big Transfer: Ähnlich wie Transformer, handelt es sich hierbei um komplexe Modelle, die bereits auf eine große Datenmenge vortrainiert wurden und dann auf spezielle Anwendungen mit deutlich weniger Daten angepasst werden. Dadurch lassen sich sehr gute Ergebnisse in verschiedenen Bereichen der Bildverarbeitung erzielen.

TensorFlow vs PyTorch

TensorFlow und PyTorch sind zwei mögliche Machine Learning Frameworks in Python, die sich in einigen Punkten zwar unterscheiden, jedoch grundsätzlich ähnliche Funktionalitäten bieten. PyTorch wurde von Facebook entwickelt und genutzt, während TensorFlow von Google kommt. Auch deshalb ist die Wahl zwischen den beiden Alternativen in vielen Fällen eher eine Geschmacksfrage.

Einen detaillierten Vergleich der beiden Frameworks sparen wir uns für einen separaten Beitrag auf. In Kürze lässt sich jedoch die Wahl TensorFlow vs Pytorch auf diese drei Hauptpunkte runterbrechen:

Verfügbarkeit von neuen Modellen

In vielen Bereichen, wie der Bilderkennung oder Natural Language Processing, ist der Aufbau eines Modell von Grund auf einfach nicht mehr zeitgemäß. Aufgrund der Komplexität der Anwendungen muss hier auf bereits vortrainierte Modelle zurückgegriffen werden. Im Research und Development ist PyTorch sehr stark vertreten und hat Forschern seit Jahren ein gutes Framework zum Trainieren ihrer Modelle geboten. Dadurch werden ihre neuen Modelle und Erkenntnisse meist auf PyTorch geteilt. Deshalb hat PyTorch in diesem Punkt die Nase vorn.

Deployment

In einem industriellen Setting kommt es jedoch nicht auf die allerletzten Prozentpunkte der Genauigkeit an, die vielleicht mit einem neuen Modell noch herausgeholt werden können, sondern vielmehr, dass das Modell einfach und schnell deployed werden kann und dann den Mitarbeitern oder Kunden zur Verfügung steht.

In diesem Punkt ist TensorFlow vor allem durch die zusätzlichen Komponenten TensorFlowLite und TensorFlow Serving die bessere Alternative und bietet viele Möglichkeiten trainierte Modelle einfach zu deployen. In diesem Framework steht der End-to-End Deep Learning Prozess, also die Schritte vom anfänglichen Datensatz hin zu einem nutzbaren und zugänglichen Modell, im Vordergrund.

Ökosysteme

Sowohl TensorFlow als auch PyTorch bieten verschiedene Plattformen in denen Repositories mit funktionierenden und vortrainierten Modellen geteilt und bewertet werden können. Die verschiedenen Plattformen sind vor allem nach den Themen der Modelle getrennt. Insgesamt ist der Vergleich in diesem Punkt sehr knapp, jedoch hat TensorFlow hier ein Stück die Nase vorne, da es für nahezu alle thematischen Bereiche eine funktionierende End-to-End Lösung bietet.

Für einen noch detaillierten Überblick über diese drei Punkte, empfehlen wir diesen Artikel von AssemblyAI.

Für welche Anwendungen kann man TensorFlow einsetzen?

TensorFlow ist bereits in vielen Industrien ein Standard, wenn es darum geht Machine Learning Modelle zu trainieren, die speziell für einem Anwendungsfall trainiert wurden. Auf deren Website kann man bereits viele Unternehmen sehen, die TF nutzen, und einige Fallstudien erklären, wo genau das Framework zum Einsatz kommt:

  • Twitter: Das soziale Netzwerk nutzt das Machine Learning Framework, um die Timeline der Nutzer zu füllen. Dabei muss sichergestellt werden, dass nur die relevantesten neuen Tweets angezeigt werden, auch wenn der Nutzer einer Vielzahl von Accounts folgt. Dazu wurde mit Hilfe von TF ein Modell gebaut, dass nur die besten Tweets vorschlägt.
  • Sinovation Ventures: Dieses Unternehmen aus der Medizinbranche nutzt die TensorFlow-Angebote, um Bildklassifizierungen zu trainieren, die auf Bildern der Netzhaut verschiedene Krankheitstypen diagnostizieren. Solche Klassifizierungen von Bildern werden in vielen Anwendungen, auch außerhalb der Medizin, benötigt.
  • Spotify: Der Streaming-Dienstleister nutzt die erweiterte Version von TensorFlow (TFX), um seinen Kunden personalisierte Songempfehlungen bereitstellen zu können. Im Vergleich zur Twitter Anwendungen stellt dabei vor allem der Input eine große Herausforderung dar, denn es muss auch sichergestellt werden, dass Parameter wie das Genre, Rhythmik oder Schnelligkeit der Songs übereinstimmen. Diese Werte sind deutlich schwieriger numerisch darzustellen, als der Text von Tweets.
  • PayPal: Der Zahlungsdienstleister hat ein komplexes Modell aufgebaut, das bereits frühzeitig betrügerische Zahlungen erkennen soll. Dabei war vor allem wichtig, dass das Modell möglichst selten fälschlicherweise legitime Zahlungen als Fake klassifiziert, um die Nutzer Experience nicht zu verschlechtern.

Wie sind TensorFlow und Keras miteinander verbunden?

TensorFlow und Keras sind zwei populäre Bibliotheken für maschinelles Lernen, die häufig gemeinsam für den Aufbau und das Training von Deep-Learning-Modellen verwendet werden. TensorFlow ist eine Open-Source-Softwarebibliothek für Datenfluss- und differenzierbare Programmierung für eine Reihe von Aufgaben, während Keras eine API für neuronale Netze auf hohem Niveau ist, die in Python geschrieben wurde und auf TensorFlow aufsetzen kann. Es bietet eine einfache und intuitive Schnittstelle für den Aufbau neuronaler Netze, während TensorFlow Low-Level-APIs für den Aufbau und das Training von Machine-Learning-Modellen bietet.

Die Verbindung zwischen TensorFlow und Keras kann auf zwei Arten verstanden werden. Erstens kann Keras als High-Level-Schnittstelle verwendet werden, um Deep-Learning-Modelle in TensorFlow zu erstellen und zu trainieren. TensorFlow stellt das rechnerische Backend für Keras zur Verfügung und ermöglicht es den Benutzern, komplexe neuronale Netzwerke mit minimalem Code zu erstellen. Keras kann auf TensorFlow als Modul laufen und bietet eine Reihe von benutzerfreundlichen Funktionen und Klassen für den Aufbau neuronaler Netze. Durch die Verwendung von Keras mit TensorFlow können Nutzer die Vorteile der leistungsstarken Funktionen von TensorFlow zur Optimierung und Skalierung von Modellen nutzen und gleichzeitig die Einfachheit und Benutzerfreundlichkeit von Keras genießen.

Unterschiede im Code für eine Layer | Quelle: Autor

Zweitens kann Keras auch als eigenständige Bibliothek, unabhängig von TensorFlow, verwendet werden. In diesem Fall verwendet Keras andere Backend-Bibliotheken wie Theano oder CNTK für die Durchführung der Berechnungen. Wenn es jedoch mit TensorFlow verwendet wird, bietet es mehrere Vorteile, darunter schnellere Berechnungszeiten und bessere Kompatibilität mit anderen TensorFlow-Tools und -Frameworks. Darüber hinaus kann das Framework die verteilten Rechenfähigkeiten von TensorFlow nutzen, so dass Benutzer große Deep-Learning-Modelle auf mehreren Maschinen trainieren können.

Insgesamt bietet die Verbindung zwischen TensorFlow und Keras ein leistungsfähiges Framework für den Aufbau und das Training von Deep-Learning-Modellen. Durch die Kombination können Benutzer die besten Eigenschaften beider Bibliotheken nutzen, einschließlich der benutzerfreundlichen Schnittstelle von Keras und der Skalierbarkeit und Optimierungsmöglichkeiten von TensorFlow. Dies erleichtert Entwicklern die Erstellung und den Einsatz von Deep-Learning-Modellen für eine Vielzahl von Anwendungen, von der Bilderkennung und der Verarbeitung natürlicher Sprache bis hin zu prädiktiver Analytik und autonomen Systemen.

Das solltest Du mitnehmen

  • TensorFlow, kurz TF, ist ein Framework für Deep Learning und Künstliche Intelligenz, das von Google entwickelt wurde und ursprünglich nur intern verwendet wurde.
  • Es bietet eine umfangreiche und leistungsfähige Plattform, um neue Machine Learning Modelle zu entwickeln oder bestehende Modelle zu nutzen.
  • Mithilfe diverser Komponenten, wie TensorFlow Lite oder Serving, ist das Deployment der Modelle besonders einfach.
  • Viele große und bekannte Unternehmen setzen auf die Funktionalitäten von TensorFlow.
Classes and Objects in Python / Klassen und Objekte in Python

Klassen und Objekte in Python – einfach erklärt!

Objektorientierte Programmierung in Python beherrschen: Erforschen Sie Klassen, Objekte und Interaktionen in unserem informativen Artikel!

Threading and Multiprocessing in Python.

Was ist Threading und Multiprocessing in Python?

Steigern Sie die Leistung von Python mit Threading und Multiprocessing. Lernen Sie, wie Sie die Parallelverarbeitung nutzen können.

Anaconda Python

Was ist Anaconda für Python?

Lernen Sie die Grundlagen von Anaconda in Python für effizientes Paketmanagement und Data Science Workflows.

Regular Expressions

Was sind Regular Expressions?

Erschließen Sie die leistungsstarke Textmanipulation in Python mit Regular Expressions. Beherrschen Sie Muster und Syntax.

Object-Oriented Programming / Objektorientierte Programmierung

Was ist objektorientierte Programmierung?

Beherrschen Sie die objektorientierte Programmierung in Python mit unserem Artikel. Lernen Sie, wiederverwendbaren Code zu erstellen!

Plotly

Was ist Plotly?

Lernen Sie, wie Sie interaktive Visualisierungen und Dashboards mit Plotly, einer Python-Bibliothek zur Datenvisualisierung, erstellen können.

Andere Beiträge zum Thema TensorFlow

Die folgenden Artikel bieten eine praktische Anleitung zur Modellerstellung in TensorFlow:

Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner