Tutorial zu TensorFlow: Open-Source-Framework für Machine Learning und KI-Anwendungen

TensorFlow gilt als eines der führenden Open-Source-Frameworks für Machine Learning und unterstützt Entwickler sowie Forschende dabei, anspruchsvolle KI-Anwendungen in zahlreichen Bereichen umzusetzen.

Was du in diesem TensorFlow-Tutorial lernst

  • Verstehen, wie Tensoren und Rechengraphen funktionieren, einschließlich des Konzepts der Eager Execution.
  • Nachvollziehen, wie Keras den Modellbau schneller und strukturierter macht.
  • TensorFlow auf Systemen mit CPU oder GPU installieren.
  • Praxisnahe TensorFlow-Anwendungsfälle in Computer Vision, Natural Language Processing und Zeitreihenanalyse kennenlernen.
  • TensorFlow mit PyTorch und JAX vergleichen, um das Verständnis für Frameworks zu erweitern.
  • Ansätze zur Performance-Optimierung und typische Fehlerbilder erkennen.

Voraussetzungen

  • Sicherer Umgang mit Python, gängigen Datenstrukturen und Paketverwaltung mit Tools wie pip oder conda.
  • Grundlagen zu Vektoren, Matrizen und Operationen wie Multiplikation und Skalarprodukt sowie zu Gradienten und partiellen Ableitungen.
  • Erfahrung mit überwachtem und unüberwachtem Lernen, inklusive Verständnis von Overfitting vs. Generalisierung, sowie Einsatz von Loss-Funktionen und Optimierungsverfahren.
  • Fähigkeit, virtuelle Umgebungen mit venv oder Conda einzurichten und zu verwalten, um Abhängigkeiten sauber zu isolieren und Konflikte zu vermeiden.

Kurzüberblick: Geschichte und Ökosystem

Bevor TensorFlow öffentlich verfügbar war, nutzte Google intern ein System namens DistBelief. TensorFlow wurde anschließend im November 2015 öffentlich veröffentlicht. Ein großer Meilenstein folgte 2019 mit TensorFlow 2.0, das eine angenehmere Nutzung durch engere Keras-Integration brachte und Eager Execution standardmäßig aktivierte. Mit dem Wachstum von TensorFlow entstanden zahlreiche Bibliotheken und Erweiterungen, die unterschiedliche Anforderungen abdecken. Einige wichtige Beispiele:

  • TensorFlow Hub: TensorFlow Hub dient als Repository, in dem Entwickler Machine-Learning-Modelle finden und für eigene Projekte wiederverwenden können.
  • LiteRT: LiteRT bietet ein schlankes TensorFlow-Erlebnis, das effizient auf mobilen und eingebetteten Geräten läuft.
  • TensorFlow.js: TensorFlow.js ermöglicht es, Machine-Learning-Modelle direkt im Browser und in Node.js-Umgebungen zu trainieren und bereitzustellen.
  • TensorFlow Extended (TFX): TensorFlow Extended unterstützt die Bereitstellung produktionsreifer Machine-Learning-Pipelines.
  • TensorBoard: TensorBoard ist die Visualisierungs- und Logging-Lösung von TensorFlow, mit der sich Rechengraphen analysieren und Trainingsfortschritte über Metriken wie Loss und Accuracy verfolgen lassen.

Das TensorFlow-Ökosystem bringt deutliche Vorteile mit seinen Funktionen. Es liefert Werkzeuge zum Erstellen und Trainieren von Modellen und unterstützt außerdem die Bereitstellung über verschiedene Plattformen hinweg.

TensowFlow-Architektur erklärt

TensorFlow basiert auf einer mehrschichtigen Architektur:

  • High-Level-APIs und Sprachen: Die Python-API ist die am häufigsten genutzte Option, und Modelle werden typischerweise in Kombination mit Keras definiert.
  • TensorFlow Core (Execution Engine): Der Kern führt rechenintensive Operationen in optimiertem C++ aus und kann für bestimmte Workloads GPU-Beschleunigung über Bibliotheken wie CUDA nutzen.
  • Optimierungen (XLA): Der XLA-Optimizer kann Teile des Rechengraphen in spezialisierten Code für CPUs, GPUs oder TPUs übersetzen, um die Ausführung maximal effizient zu gestalten.
  • Device-Management und Skalierung: TensorFlow kann über unterschiedliche Hardware und mehrere Maschinen hinweg arbeiten; die Device-Schicht verteilt Modellbestandteile auf CPUs, GPUs und TPUs.
  • Autograph und Auto-Differentiation: TensorFlow unterstützt automatische Differenzierung (autograd), die für das Training neuronaler Netze zentral ist.
  • Modellformate und Portabilität: Modelle lassen sich über das Saved-Model-Format speichern und austauschen.

Dieses Design ermöglicht es, sich auf Aufgaben auf höherer Ebene zu konzentrieren, während TensorFlow viele Low-Level-Operationen im Hintergrund übernimmt.

Installation von TensorFlow

Im Folgenden wird gezeigt, wie du TensorFlow auf deinem System installierst.

Schritt 1: Python installieren (falls noch nicht vorhanden).

TensorFlow funktioniert mit Python 3.7 bis 3.11. Stelle sicher, dass du eine von TensorFlow unterstützte Python-Version verwendest. Um Abhängigkeitskonflikte bei der Installation zu vermeiden, richte eine virtuelle Umgebung mit venv oder Conda ein.

Schritt 2: TensorFlow mit pip installieren

Der folgende Befehl installiert die aktuelle stabile TensorFlow-Version direkt von PyPI. Dabei wird TensorFlow heruntergeladen und die benötigten Abhängigkeiten werden mit installiert.

TensorFlow kann zur Laufzeit automatisch eine GPU erkennen, sofern die passenden NVIDIA CUDA- und cuDNN-Bibliotheken installiert sind. In TensorFlow 2.x wurden CPU- und GPU-Unterstützung in einem Paket zusammengeführt, sodass separate tensorflow- und tensorflow-gpu-Pakete nicht mehr erforderlich sind.

Schritt 3: Installation prüfen.

Nach der Installation importierst du TensorFlow, um zu prüfen, ob alles korrekt funktioniert:

import tensorflow as tf
print("TensorFlow version:", tf.__version__)

Wenn die Installation korrekt ist, wird die installierte TensorFlow-Version angezeigt…

Du kannst außerdem prüfen, ob TensorFlow deine GPU erkennt:

print("GPUs available:", tf.config.list_physical_devices('GPU'))

Das listet erkannte GPU-Geräte auf. Ist die Liste leer, obwohl du eine GPU erwartest, kann das auf ein Problem hindeuten.

Tensoren und Rechengraphen erklärt

Ein Tensor ist eine zentrale Datenstruktur und wird als mehrdimensionales Array dargestellt. Er kann als Skalar (0-dimensional), Vektor (1D), Matrix (2D) oder in höheren Dimensionen auftreten. Jeder Tensor besitzt einen definierten Datentyp wie float32 oder int64 sowie eine konkrete Shape. Praktisch betrachtet ist ein Tensor ein Speicherblock mit numerischen Werten und Metadaten, die Form und Datentyp beschreiben.

Ein Rechengraph (auch Dataflow Graph genannt) besteht aus Knoten, die Operationen darstellen, und Kanten, die Tensoren repräsentieren. Die Kanten zeigen, wie Tensoren zwischen Operationen als Ein- und Ausgaben fließen.

In TensorFlow 1.x wurde typischerweise zunächst ein Graph erstellt und später in einer Session ausgeführt.

Mit TensorFlow 2.x wurde Eager Execution zum Standard. Unter Eager Execution werden Operationen sofort beim Aufruf ausgeführt, statt zuerst einen statischen Graphen für eine spätere Ausführung zu bauen.

import tensorflow as tf
# Here we define two tensors (2x2 matrices)
A = tf.constant([[2, 3], [4, 5]], dtype=tf.int32)
B = tf.constant([[6, 7], [8, 9]], dtype=tf.int32)

# element-wise addition
C = A + B
print(C)  # print a tf.Tensor with the result [[8, 10], [12, 14]]

In diesem Beispiel sind A und B Tensoren, während C ein neuer Tensor ist, der durch die elementweise Addition entsteht. Da TensorFlow 2 Eager Execution nutzt, erfolgt die Addition unmittelbar.

Keras-Integration und Modellaufbau

Um Deep-Learning-Modelle mit TensorFlow zu erstellen, kannst du Keras über das tf.keras-Modul verwenden. Keras bietet eine klare, zugängliche Möglichkeit, Layer, Modelle, Loss-Funktionen und Optimizer zu definieren…

Modellarchitektur definieren

Modelle lassen sich mit der Sequential API oder der Functional API von Keras aufbauen. Die Sequential API eignet sich besonders für einfache, lineare Layer-Stacks. Im folgenden Beispiel wird keras.Sequential genutzt, um zwei Layer zu stapeln: einen Dense-Layer mit 64 Einheiten und ReLU-Aktivierung sowie einen Dense-Output-Layer mit einer Einheit und Sigmoid-Aktivierung. Keras übernimmt dabei automatisch die Initialisierung der Gewichte und die Verknüpfung der Layer.

from tensorflow import keras
from tensorflow.keras import layers

# Define a simple sequential model
model = keras.Sequential([layers.Dense(64, activation='relu', input_shape=(10,)),  # hidden layer with 10 inputs
layers.Dense(1, activation='sigmoid')  # output layer (1 neuron for binary classification)
])

Modell kompilieren

Bevor du das Modell trainierst, musst du es kompilieren. Wähle eine Loss-Funktion (das Ziel, das minimiert werden soll), einen Optimizer (z. B. SGD oder Adam zum Aktualisieren der Gewichte) und optional Metriken wie Accuracy.

model.compile(optimizer='adam',loss='binary_crossentropy', metrics=['accuracy'])

Daten vorbereiten

Beginne damit, den Datensatz zu laden und vorzubereiten. Wandle ihn in NumPy-Arrays oder tf.data-Datasets um, damit die Form zu den Eingaben des Modells passt. Wenn das Modell beispielsweise Eingaben mit der Shape (10,) erwartet, sollte der Datensatz als [number_of_samples, 10] formatiert sein.

Modell trainieren

Trainiere das Modell mit der Methode model.fit() für eine festgelegte Anzahl an Epochen.

history = model.fit(X_train, y_train, epochs=20, batch_size=32, validation_data=(X_val, y_val))

Während des Trainings iteriert Keras für die angegebenen Epochen über die Daten und passt die Gewichte über den Optimizer an. In jeder Epoche werden Loss und Metriken für die Trainingsdaten berechnet und – sofern vorhanden – ebenso für die Validierungsdaten.

Evaluieren und Vorhersagen

Nach Abschluss des Trainings kannst du die Performance auf einem Testdatensatz auswerten:

test_loss, test_acc = model.evaluate(X_test, y_test)
print('Test accuracy:', test_acc)

Anschließend nutzt du model.predict(), um Vorhersagen für neue Eingaben zu erzeugen.

Modell bereitstellen oder speichern

Speichere Keras-Modelle mit model.save(‘model.h5’) oder model.save(‘model_name’) auf der Festplatte. Dadurch entsteht ein SavedModel-Format. Nach dem Speichern kannst du das Modell für Inferenz wieder laden oder das Training fortsetzen.

Hinweis: Keras bringt praktische Komfortfunktionen mit, darunter Callbacks. Trainings-Callbacks dienen als Hooks für bestimmte Aktionen, zum Beispiel EarlyStopping, das das Training beendet, wenn sich der Validation Loss nicht weiter verbessert.

Estimatoren verstehen

Die tf.estimator API von TensorFlow bietet einen High-Level-Ansatz für produktionsreifes Training und Evaluation und bündelt den Workflow in einer einheitlichen Schnittstelle.

Integrierte Estimatoren

Die folgende Tabelle zeigt mehrere integrierte Estimatoren für gängige Machine-Learning-Aufgaben.

Estimator Beschreibung
tf.estimator.LinearClassifier Lineares Modell für binäre oder mehrklassige Klassifikation
tf.estimator.DNNClassifier Klassifikator auf Basis tiefer neuronaler Netzwerke
tf.estimator.DNNLinearCombinedClassifier „Wide & Deep“-Modell, das lineare Komponenten mit DNNs kombiniert
tf.estimator.LinearRegressor Lineares Regressionsmodell
tf.estimator.DNNRegressor Regressionsmodell auf Basis tiefer neuronaler Netzwerke
tf.estimator.BaselineClassifier / tf.estimator.BaselineRegressor Einfache Baseline-Modelle nach dem Prinzip „Durchschnitt schätzen“

Du kannst außerdem einen eigenen Estimator über eine model_fn-Funktion erstellen und damit jeden Aspekt – von der Dateneingabe bis zum Export – passend zu deinen Anforderungen steuern.

Vorteile von Estimatoren

  • Verwaltet Checkpoints automatisch und reduziert Boilerplate-Code.
  • Integriert sich reibungslos in verschiedene Strategien für verteiltes Training.
  • Ermöglicht einen einfachen Modellexport für Deployment- und Inferenz-Pipelines.

Einschränkungen von Estimatoren

  • Kann bei stark experimenteller Forschung weniger flexibel sein als reines Keras.
  • Die API wurde seit dem stärker Keras-orientierten Fokus mit TensorFlow 2.0 weniger aktiv weiterentwickelt.

Praktische Use Cases und Anwendungen mit TensorFlow

Durch seine Flexibilität eignet sich TensorFlow für viele Anwendungsbereiche. Die folgende Tabelle zeigt verbreitete TensorFlow-Domains und verweist auf praktische Tutorials.

Bereich Zentrale Anwendungsfälle
Computer Vision Bildklassifikation (CIFAR-10, ImageNet), Objekterkennung (SSD, Faster R-CNN, YOLO), Segmentierung (semantisch, Instanz-Segmentierung)
Natural Language Processing Textklassifikation (Sentimentanalyse, Spam-Erkennung), Seq-to-Seq-Modelle (Übersetzung, Zusammenfassung), Fragebeantwortung & Embeddings (BERT, USE)
Zeitreihen & Forecasting Univariate und multivariate Vorhersagen (Verkäufe, Nachfrage), Anomalieerkennung (Sensorik, Finanzdaten), Sequenzmodellierung
Generative Modelle GANs für Bild- und Videosynthese, VAEs für Latent-Space-Sampling, Style Transfer & Datenaugmentation
Reinforcement Learning Policy-Gradient-Methoden (REINFORCE, A2C, PPO), Q-Learning (DQN, Double DQN), Multi-Agenten-Umgebungen
Enterprise Predictive Analytics Klassifikation (Churn, Kreditausfall), Regression (Bestands- und Preisprognosen), Anomalieerkennung (Betrug), Empfehlungssysteme

Performance und Skalierbarkeit

TensorFlow bietet verschiedene Strategien zur Performance-Steigerung und Skalierung. Dazu gehören unter anderem:

  • tf.distribute.MirroredStrategy: Unterstützt synchronisiertes Training über mehrere GPUs innerhalb einer einzelnen Maschine.
  • MultiWorkerMirroredStrategy: Entwickelt für verteiltes Training über mehrere Maschinen hinweg.
  • XLA (Accelerated Linear Algebra): Ein Compiler, der Rechengraphen beschleunigt und die Speicherauslastung verbessert.
  • TPU Support: Die integrierte Unterstützung für Google TPUs hilft dabei, großskalige Trainingsprozesse zu beschleunigen.

Durch diese Flexibilität eignet sich TensorFlow sowohl für Forschung und Prototyping als auch für produktive Deployments, die horizontale Skalierung benötigen.

Vergleich von Deep-Learning-Frameworks: TensorFlow 2 vs PyTorch vs JAX

Die folgende Tabelle vergleicht TensorFlow 2, PyTorch und JAX. TensorFlow bietet eine End-to-End-Umgebung für Forschung, Produktion und Edge-Szenarien. PyTorch setzt auf Python-nahe Prinzipien für Forschung und profitiert von einer stark wachsenden Community. JAX liefert eine NumPy-ähnliche, funktionale Schnittstelle und kombiniert diese mit JIT-Kompilierung für High-Performance-Computing.

Feature TensorFlow 2 PyTorch JAX
Ausführungsmodell Standardmäßig Eager Execution, mit optionaler Graph-Kompilierung über @tf.function Reine Eager Execution; optionale statische Graphen über TorchScript (torch.jit.trace/script) NumPy-ähnliche funktionale API; JIT-Kompilierung über jax.jit
Deployment & Produktion TensorFlow Serving, TFX-Pipelines, LiteRT für Edge-Runtimes, TensorFlow.js ONNX-Export; Executorch für iOS/Android Stärker forschungsorientiert; begrenzte offizielle Serving-Tools, Export über jax2tf (JAX zu TensorFlow)
TPU- & Hardware-Unterstützung Native XLA-basierte Unterstützung für TPU, GPU und CPU Fokus auf GPU/CPU; experimentelle TPU-Unterstützung über PyTorch/XLA Erstklassige TPU- und GPU-Unterstützung über XLA
Ökosystem & Community Breite Unternehmensnutzung; umfasst TensorFlow Hub und TFX-Bibliotheken Starke Forschungs-Community; großes PyTorch-Lightning-Ökosystem Schnell wachsende akademische Nutzung; enge Integration in NumPy-Workflows
Lernkurve Mittel – umfangreiche Guides, Codebeispiele und Tutorials verfügbar Python-nahe API mit intuitivem Debugging und wenig Boilerplate-Code Erfordert Verständnis funktionaler Transformationen und JAX-Primitiven

Häufige Fehler & Debugging-Tipps

Die folgende Tabelle zeigt typische Stolperfallen bei der Arbeit mit TensorFlow und gibt praktische Hinweise zur Diagnose und Behebung.

Fehler / Stolperfalle Symptome Debugging-Tipp
Shape Mismatch Errors ValueError: Dimensions must agree. Inkompatible Tensor-Shapes zwischen Modell-Ausgaben und Labels model.summary() prüfen und Tensor-Shapes zur Laufzeit ausgeben. Shapes anpassen oder tf.expand_dims verwenden, um eine Dimension zu erweitern.
Type Errors (dtype mismatches) Fehler beim Mischen von tf.float32/tf.float64, Integern/Floats oder beim Übergeben nativer Typen an Operationen Tensoren mit tf.cast umwandeln. Für neuronale Netzwerkdaten möglichst einheitlich float32 verwenden.
Vergessenes compile() oder nicht gebautes Modell Fehler bei fit() oder Training schlägt fehl, weil keine Kompilierung erfolgt ist oder die Eingabeform fehlt Immer model.compile() vor model.fit() aufrufen. input_shape in der ersten Schicht angeben oder das Modell mit model.build(input_shape) bauen.
GPU wird nicht genutzt Training läuft langsam auf der CPU, obwohl eine GPU verfügbar ist tf.config.list_physical_devices(GPU) prüfen. Korrekte CUDA-/cuDNN-Versionen sicherstellen. Installation über Conda kann GPU-Abhängigkeiten automatisch verwalten. tf.device-Nutzung prüfen.
Speicherfehler (OOM) Out-of-Memory-Abstürze bei großen Modellen oder Batch-Größen Batch-Größe oder Modellkomplexität reduzieren. Große Tensoren nicht unnötig im Speicher behalten. GPU Memory Growth aktivieren: tf.config.experimental.set_memory_growth(dev, True).
Konvergenz- / NaN-Probleme Trainingsverlust wird NaN oder konvergiert nicht Lernrate senken. Gradient Clipping verwenden (clipnorm/clipvalue). Auf Operationen prüfen, die Unendlichkeiten verursachen können, z. B. Division durch null. tf.debugging.enable_check_numerics() nutzen, um NaNs/Infs zu erkennen.
Callbacks für bessere Einblicke nutzen Schwierigkeit, Trainingsverlauf und Overfitting zu überwachen TensorBoard-Callback verwenden, um Metriken zu visualisieren. LearningRateScheduler einsetzen, um die Lernrate anzupassen.
Versionskompatibilität Legacy TF1 code (e.g., tf.session(), tf.placeholder) breaks under TF2 TF2-Idiome nutzen, z. B. Eager Execution und tf.keras. Falls nötig, tf.compat.v1 für Legacy-Code verwenden. TensorFlow- und Add-ons-Versionen kompatibel halten.
Fehlermeldungen lesen Einschüchternde, mehrstufige Stacktraces Den ersten Stack-Frame suchen, der auf eigenen Code verweist. Die Meldung dieser Operation als Ausgangspunkt für die Fehlerbehebung nutzen.

TensorFlow-FAQ

Wofür genau wird TensorFlow eingesetzt?

TensorFlow stellt ein umfassendes Werkzeugset bereit, um Machine-Learning-Modelle und tiefe neuronale Netze zu erstellen. Diese Modelle lassen sich anschließend in unterschiedlichen Bereichen einsetzen und ausrollen, etwa in Computer Vision, Natural Language Processing, Zeitreihenprognosen und vielen weiteren KI-Anwendungsfällen.

Ist TensorFlow einfach nur Python?

TensorFlow nutzt Python als wichtigste API, doch der TensorFlow-Kern ist in C++ umgesetzt, um eine höhere Performance zu erreichen. Zusätzlich bietet TensorFlow Bindings für weitere Sprachen wie Java und JavaScript.

Was unterscheidet TensorFlow von PyTorch?

TensorFlow liefert ein vollständiges Ökosystem für produktive Umgebungen mit Tools wie TFX und LiteRT. PyTorch legt den Schwerpunkt stärker auf Forschungs-Flexibilität und arbeitet mit dynamischen Graph-Strukturen, die Experimente besonders unkompliziert machen.

Ist TensorFlow kostenlos nutzbar?

TensorFlow ist als Open-Source-Software verfügbar und steht unter der Apache-2.0-Lizenz.

Was ist der Unterschied zwischen TensorFlow und Keras?

Keras ist eine High-Level-API für den Modellaufbau, während TensorFlow das zugrunde liegende Framework ist, das die Operationen tatsächlich ausführt.

Sollte ich zuerst TensorFlow oder PyTorch lernen?

Starte mit TensorFlow, wenn du von seinen Produktionsmöglichkeiten und der Breite des Ökosystems profitieren möchtest. Wähle PyTorch, wenn du eine intuitive Oberfläche für schnelles Prototyping benötigst.

Ist TensorFlow schwer zu lernen?

Durch die Eager-Execution als Standard in TensorFlow 2.x und die enge Integration von tf.keras ist TensorFlow für Einsteiger deutlich einfacher geworden.

Fazit

Das TensorFlow-Ökosystem ermöglicht es, Machine-Learning-Modelle in jeder Größenordnung zu entwickeln, zu trainieren und bereitzustellen – basierend auf den Kernkonzepten Tensoren und Rechengraphen. Zusätzlich stellt es High-Level-APIs wie Keras und tf.estimator bereit.

Das Framework überzeugt durch Kompatibilität mit CPUs, GPUs, TPUs und Edge-Geräten und bietet zugleich Tools für Produktions-Pipelines (TFX), Visualisierung (TensorBoard) sowie schlanke Inferenz-Lösungen (LiteRT, TensorFlow.js).

Mit TensorFlow lassen sich Machine-Learning-Konzepte in praktische Anwendungen überführen. Es verbindet die Flexibilität des Prototypings im Eager-Modus mit starker Performance und Skalierung durch XLA-basierte Optimierung statischer Graphen.

Quelle: digitalocean.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren:

Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

ssl_error_rx_record_too_long beheben in Apache & Nginx

Security, Tutorial
Vijonavor 38 Minuten ssl_error_rx_record_too_long beheben: Ursachen, Symptome und typische Konfigurationsfallen Wenn im Browser plötzlich ssl_error_rx_record_too_long auftaucht, fühlt sich das beim Einrichten von sicherem HTTPS schnell wie eine harte Blockade an. Meist…
Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

Linux Berechtigungen verstehen

AI/ML, Tutorial
Vijonavor 2 Stunden Linux-Dateiberechtigungen: Zugriff mit chmod, chown und chgrp verwalten Unter Linux sind Berechtigungen ein zentraler Bestandteil des Sicherheitskonzepts und der Dateiverwaltung. Sie legen fest, wer auf Dateien und Verzeichnisse…