German Version
Beschreibung von TensorFlow in V7
TensorFlow bietet leistungsstarke Mechanismen zum Speichern und Wiederverwenden von bereits trainierten Modellen. Dies ist besonders nützlich, wenn du ein Modell für neue Vorhersagen verwenden oder weitertrainieren möchtest, ohne es jedes Mal neu zu trainieren.
Grundlegende Konzepte von TensorFlow
- Tensoren
- Ein Tensor ist die grundlegende Datenstruktur in TensorFlow.
- Es handelt sich um N-dimensionale Arrays (ähnlich wie NumPy-Arrays).
- Tensoren repräsentieren Eingabedaten, Modellparameter und Ausgaben.
- Operationen (Ops)
- Operationen sind Rechenoperationen, die auf Tensoren ausgeführt werden (z. B. Addition, Matrixmultiplikation).
- Sie bilden den Kern der Berechnung in TensorFlow.
- Berechnungsgraph
- TensorFlow organisiert Berechnungen als einen Graphen, in dem die Knoten Operationen sind und die Kanten die Tensoren darstellen, die zwischen den Operationen fließen.
- Der Graph ermöglicht parallele Berechnungen und Optimierungen.
Wichtige Komponenten
Modelle
- TensorFlow ermöglicht die Erstellung von Modellen mit:
- Keras API: Benutzerfreundliche High-Level-API für ML/Deep Learning.
- Low-Level-API: Flexibilität für komplexe Modelle.
- Beispiel eines neuronalen Netzes mit Keras:
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
model = Sequential([
Dense(64, activation='relu', input_shape=(10,)),
Dense(1, activation='linear')
])
model.compile(optimizer='adam', loss='mse')
Training und Backpropagation
- TensorFlow berechnet den Verlust (Loss) basierend auf den Modellvorhersagen und den tatsächlichen Werten.
- Es optimiert die Modellparameter mithilfe von Backpropagation und Optimierungsalgorithmen wie Adam oder SGD.
Workflow in TensorFlow
1. Datenerstellung und -vorverarbeitung
- Daten werden geladen und für das Modell vorbereitet (z. B. Normalisierung, One-Hot-Encoding).
- Nutzung von
tf.data
für Datenpipelines.
2. Modell erstellen
- Definiere die Architektur des Modells mit Keras (z. B. Neuronale Netzwerke, CNNs, RNNs).
- Alternativ: Erstelle benutzerdefinierte Modelle mit der Low-Level-API.
3. Training
- Trainiere das Modell mit
model.fit()
oder benutzerdefinierten Training-Loops.
- TensorFlow optimiert die Modellparameter basierend auf dem gewählten Optimierer.
4. Evaluation
- Bewerte die Leistung des Modells auf Testdaten.
5. Speichern und Bereitstellen
- Speichere das Modell im SavedModel-Format oder als HDF5-Datei.
- TensorFlow unterstützt die Bereitstellung auf Cloud-Plattformen, Mobilgeräten (TensorFlow Lite) und im Web (TensorFlow.js).
Online-Learning (Continuous Learning)
Modelle können so eingestellt werden, dass sie kontinuierlich aus neuen Daten lernen. Dies geschieht oft in Echtzeit-Systemen.
1. Modell speichern
TensorFlow unterstützt das Speichern von Modellen in zwei Formaten:
- HDF5-Format (
.h5
): Traditionelles Format für Modelle.
- SavedModel-Format (empfohlen): Flexibles und portables TensorFlow-Format.
| Feature | SavedModel | HDF5 |
|—————————–|————————|——————–|
| Speicherstruktur | Ordnerstruktur | Einzelne Datei |
| Keras-Unterstützung | Ja | Ja |
| TensorFlow-Kompatibilität| Ja | Eingeschränkt |
| Einbettbare Daten (Assets)| Ja | Nein |
| Plattformportabilität | Hoch | Mittel |
| Modellarchitektur ändern| Schwierig | Einfach |
2. Modell laden
Ein gespeichertes Modell kann einfach geladen und direkt für Vorhersagen oder Weitertraining verwendet werden.
Code-Beispiel (Laden des Modells):
# SavedModel-Format
loaded_model = tf.keras.models.load_model('my_model')
# HDF5-Format
loaded_model_h5 = tf.keras.models.load_model('my_model.h5')
# Vorhersagen mit dem geladenen Modell
import numpy as np
new_data = np.random.rand(5, 10) # Beispiel-Daten
predictions = loaded_model.predict(new_data)
3. Modell nach dem Laden weiter trainieren
Nach dem Laden eines Modells kannst du es mit neuen Daten weitertrainieren, ohne die vorher gelernten Gewichte zu verlieren.
Code-Beispiel:
# Neue Daten
new_X = np.random.rand(100, 10)
new_y = np.random.rand(100)
# Weitertraining
loaded_model.fit(new_X, new_y, epochs=5)
4. Speichern und Laden von Gewichten
Falls du nur die Gewichte des Modells speichern möchtest, kannst du dies unabhängig vom Modell tun.
Code-Beispiel (Gewichte speichern und laden):
# Speichern der Gewichte
model.save_weights('model_weights.h5')
# Laden der Gewichte in ein Modell mit der gleichen Architektur
model.load_weights('model_weights.h5')
5. Modell exportieren für andere Systeme
- TensorFlow-Modelle können im TF Lite-Format exportiert werden, um auf mobilen Geräten oder IoT-Systemen verwendet zu werden.
- Code-Beispiel:
converter = tf.lite.TFLiteConverter.from_saved_model('my_model')
tflite_model = converter.convert()
# Speichern als .tflite-Datei
with open('model.tflite', 'wb') as f:
f.write(tflite_model)
Best Practices beim Speichern und Laden von Modellen
- Ordnerstruktur beibehalten: Besonders beim SavedModel-Format sollten die Metadaten und Dateien im gleichen Verzeichnis bleiben.
- Versionierung verwenden: Benenne deine Modelle nach Versionen (
model_v1
, model_v2
), um Änderungen nachzuverfolgen.
- Überwachung mit TensorBoard: Verwende TensorBoard, um den Trainingsfortschritt zu visualisieren und bei Bedarf ältere Versionen zu laden.
Lizenz
Autor: Jörg Harzmann
Dieser Inhalt ist unter einer CC BY-NC Lizenz veröffentlicht.
Jeglicher Quellcode ist urheberrechtlich geschützt!