Keras
Keras ist eine hochrangige Python-API zum Erstellen und Trainieren neuronaler Netze. Seit Keras 3 lässt sich derselbe Code mit JAX, TensorFlow oder PyTorch ausführen.
Keras ist eine quelloffene, hochrangige Python-API zum Erstellen und Trainieren von neuronalen Netzen. François Chollet veröffentlichte Keras im März 2015, um Experimente im Deep Learning schnell umsetzen zu können: Ein Modell ist ein Stapel oder Graph aus Schichten, compile legt den Optimierer, die Verlustfunktion und die Metriken fest, und fit führt die Trainingsschleife aus. Keras wurde zur offiziellen High-Level-API von TensorFlow. Keras 3, veröffentlicht im November 2023, führt denselben Modellcode auf JAX, TensorFlow oder PyTorch aus, je nachdem, welches Framework beim Import von Keras ausgewählt wird. Dank seines kurzen, gut lesbaren Codes wird Keras häufig zum Lernen, für Prototypen und Kaggle-Wettbewerbe sowie für produktive Modelle zur Bildklassifizierung und Verarbeitung natürlicher Sprache verwendet.
So funktioniert Keras#
Ein Keras-Modell besteht aus Schichten wie Dense, Conv2D, LSTM und MultiHeadAttention, die jeweils eigene Gewichte enthalten. Keras bietet drei Möglichkeiten, sie zusammenzusetzen: die API Sequential für einen einfachen Stapel, die funktionale API für Graphen mit Verzweigungen, gemeinsam genutzten Schichten oder mehreren Eingaben und das Subclassing von keras.Model für die vollständige Kontrolle über den Forward-Pass. Ein kompiliertes Modell wird mit fit trainiert. Dabei werden Batchverarbeitung, Backpropagation, Metriken, Validierungsdaten und Callbacks für Checkpoints oder Early Stopping verwaltet. Anschließend bewertet es neue Daten mit evaluate und predict. Dieser Code trainiert einen kleinen Ziffernklassifikator mit dem in Keras enthaltenen MNIST-Datensatz:
import os
os.environ["KERAS_BACKEND"] = "torch" # or "jax" or "tensorflow", set before importing Keras
import keras
# MNIST handwritten digits, with pixels scaled to [0, 1]
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# Define the model as a stack of layers
model = keras.Sequential(
[
keras.Input(shape=(28, 28)),
keras.layers.Flatten(),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dense(10, activation="softmax"),
]
)
# Configure training, then train and evaluate
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=2, batch_size=64, verbose=0)
loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f"Test accuracy: {accuracy:.3f}")Nach zwei Epochen gibt der Code eine Test-Genauigkeit von etwa 0,96 aus. Wenn du "torch" in "jax" oder "tensorflow" änderst, wird dasselbe Modell ohne weitere Codeänderungen auf einem anderen Framework ausgeführt.
Keras 3 und seine Backends#
Keras lief ursprünglich auf mehreren Engines, darunter Theano, TensorFlow und CNTK. Keras 2.3, veröffentlicht im September 2019, war die letzte Version mit mehreren Backends. Danach wurde die Entwicklung in TensorFlow als tf.keras integriert. Keras 3 stellte die Unabhängigkeit vom Backend wieder her: Schichten und Modelle werden mit keras.ops geschrieben, einer NumPy-ähnlichen Gruppe von Operationen, die jedes Backend implementiert. Daher kann ein im Format .keras gespeichertes Modell mit jedem Backend neu geladen und trainiert werden. Mit dem PyTorch-Backend ist ein Keras-Modell außerdem ein torch.nn.Module, das eine benutzerdefinierte PyTorch-Trainingsschleife verwenden kann. Seit Keras 3.8 führt ein reines Inferenz-Backend für OpenVINO trainierte Modelle auf Intel-Hardware aus.
Seit TensorFlow 2.16 wird bei der Installation von TensorFlow auch Keras 3 installiert. Code, der weiterhin Keras 2 benötigt, verwendet das separate Paket tf_keras. Modellkonverter unterstützen ebenfalls Keras: Wenn Ultralytics YOLO YOLO26 in ein TensorFlow SavedModel exportiert, erstellt der Konverter onnx2tf das PyTorch-Netzwerk aus dem ONNX-Graphen Schicht für Schicht als Keras-Modell neu, bevor er es speichert.
Vortrainierte Modelle in KerasHub#
KerasHub bietet Implementierungen beliebter Architekturen für Keras 3 mit vortrainierten Checkpoints, beispielsweise ResNet für Bilder, BERT für Text und die großen Sprachmodelle von Gemma. Mit dem Namen einer Voreinstellung lädst du ein Modell, das sich für Transfer Learning eignet: keras_hub.models.ImageClassifier.from_preset("resnet_50_imagenet") gibt einen auf ImageNet trainierten Klassifikator zurück, der sich durch Feinabstimmung mit demselben Aufruf fit wie oben an einen neuen Datensatz anpassen lässt. Wie die übrigen Komponenten von Keras 3 laufen die Modelle von KerasHub auf jedem der drei Backends für das Training.
Keras im Vergleich zu TensorFlow und PyTorch#
- TensorFlow: Ein umfassendes Framework mit eigener Laufzeitumgebung, eigenem Compiler und Bereitstellungstools wie TensorFlow Serving und LiteRT. Keras ist die API, in der viele TensorFlow-Nutzer Modelle schreiben, und TensorFlow ist eine der Engines, die Keras-Code ausführen.
- PyTorch: Ein Framework, in dem Nutzer die Trainingsschleife üblicherweise selbst schreiben oder eine Bibliothek wie PyTorch Lightning verwenden. Keras stellt die Schleife über
fitbereit und kann PyTorch als Backend nutzen. Die beiden schließen sich also nicht gegenseitig aus. - JAX: Googles Bibliothek für kombinierbare Funktionstransformationen zur Differentiation, XLA-Kompilierung und Vektorisierung. JAX bietet keine integrierte Schicht- oder Trainings-API. Keras ist eine Möglichkeit, eine solche API darauf aufzubauen.










