Zum Inhalt springen

Was ist TensorFlow?

  • 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

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.

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.

Andere Beiträge zum Thema TensorFlow

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

close
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