Keras
Keras est une API Python de haut niveau pour créer et entraîner des réseaux de neurones. Depuis Keras 3, le même code fonctionne avec JAX, TensorFlow ou PyTorch.
Keras est une API Python open source de haut niveau pour créer et entraîner des réseaux neuronaux. François Chollet l’a publiée en mars 2015 pour faciliter la rédaction d’expériences d’apprentissage profond : un modèle est une pile ou un graphe de couches, compile définit l’optimiseur, la fonction de perte et les métriques, et fit exécute la boucle d’entraînement. Keras est devenue l’API officielle de haut niveau de TensorFlow. Keras 3, publiée en novembre 2023, exécute le même code de modèle sur JAX, TensorFlow ou PyTorch, selon le backend choisi à l’importation de Keras. Son code court et lisible en fait un choix fréquent pour l’enseignement, le prototypage et les compétitions Kaggle, ainsi que pour les modèles de production en classification d’images et en traitement automatique du langage naturel.
Fonctionnement de Keras#
Un modèle Keras est composé de couches telles que Dense, Conv2D, LSTM et MultiHeadAttention, chacune avec ses propres poids. Keras propose trois façons de les assembler : l’API Sequential pour une simple pile, l’API fonctionnelle pour les graphes avec des branches, des couches partagées ou plusieurs entrées, et la création de sous-classes de keras.Model pour contrôler entièrement la propagation avant. Un modèle compilé s’entraîne avec fit, qui gère le traitement par lots, la rétropropagation, les métriques, les données de validation et les rappels pour les points de contrôle ou l’arrêt anticipé. Il évalue ensuite de nouvelles données avec evaluate et predict. Ce code entraîne un petit classificateur de chiffres sur le jeu de données MNIST fourni avec Keras :
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}")Après deux époques, il affiche une précision de test d’environ 0.96. Remplacer "torch" par "jax" ou "tensorflow" exécute le même modèle sur un autre framework sans modifier aucune autre ligne.
Keras 3 et ses backends#
Keras fonctionnait initialement sur plusieurs moteurs, dont Theano, TensorFlow et CNTK. Keras 2.3, publiée en septembre 2019, a été sa dernière version multibackend. Le développement a ensuite été intégré à TensorFlow sous la forme de tf.keras. Keras 3 a rétabli l’indépendance vis-à-vis du backend : les couches et les modèles s’appuient sur keras.ops, un ensemble d’opérations de type NumPy implémentées par chaque backend. Un modèle enregistré au format .keras peut donc être rechargé et entraîné avec n’importe quel backend. Avec le backend PyTorch, un modèle Keras est également un torch.nn.Module utilisable par une boucle d’entraînement PyTorch personnalisée. Depuis Keras 3.8, un backend OpenVINO réservé à l’inférence exécute les modèles entraînés sur le matériel Intel.
Depuis TensorFlow 2.16, l’installation de TensorFlow installe Keras 3. Le code qui nécessite encore Keras 2 utilise le paquet distinct tf_keras. Les convertisseurs de modèles ciblent aussi Keras : quand Ultralytics YOLO exporte YOLO26 vers un TensorFlow SavedModel, le convertisseur onnx2tf reconstruit le réseau PyTorch à partir de son graphe ONNX sous forme de modèle Keras, couche par couche, avant de l’enregistrer.
Modèles préentraînés dans KerasHub#
KerasHub propose des implémentations Keras 3 d’architectures populaires avec des points de contrôle préentraînés, comme ResNet pour les images, BERT pour le texte et les grands modèles de langage Gemma. Un nom de préréglage charge un modèle prêt pour l’apprentissage par transfert : keras_hub.models.ImageClassifier.from_preset("resnet_50_imagenet") renvoie un classificateur entraîné sur ImageNet, que le réglage fin adapte à un nouveau jeu de données avec le même appel fit qu’auparavant. Comme le reste de Keras 3, les modèles KerasHub fonctionnent avec chacun des trois backends d’entraînement.
Keras, TensorFlow et PyTorch : comparaison#
- TensorFlow : un framework complet doté de son propre environnement d’exécution, de son compilateur et d’outils de déploiement comme TensorFlow Serving et LiteRT. Keras est l’API avec laquelle de nombreux utilisateurs de TensorFlow écrivent leurs modèles, et TensorFlow est l’un des moteurs qui exécute le code Keras.
- PyTorch : un framework dans lequel les utilisateurs écrivent généralement eux-mêmes la boucle d’entraînement ou utilisent une bibliothèque comme PyTorch Lightning. Keras fournit la boucle via
fitet peut utiliser PyTorch comme backend ; les deux ne s’excluent donc pas mutuellement. - JAX : la bibliothèque de Google qui propose des transformations de fonctions composables pour la différentiation, la compilation XLA et la vectorisation. JAX ne fournit aucune API intégrée pour les couches ou l’entraînement ; Keras est l’une des façons d’en obtenir une.










