Keras
Keras è un'API Python di alto livello per creare e addestrare reti neurali che, da Keras 3, esegue lo stesso codice su JAX, TensorFlow o PyTorch.
Keras è un'API Python open source di alto livello per creare e addestrare reti neurali. François Chollet l'ha presentata nel marzo 2015 per rendere rapida la scrittura di esperimenti di apprendimento profondo: un modello è una pila o un grafo di livelli, compile imposta l'ottimizzatore, la funzione di perdita e le metriche, mentre fit esegue il ciclo di addestramento. Keras è diventata l'API ufficiale di alto livello di TensorFlow e Keras 3, rilasciata nel novembre 2023, esegue lo stesso codice del modello su JAX, TensorFlow o PyTorch, scelto al momento dell'importazione di Keras. Il codice breve e leggibile la rende una scelta comune per l'insegnamento, la prototipazione e le competizioni Kaggle, oltre che per modelli di produzione nella classificazione delle immagini e nell'elaborazione del linguaggio naturale.
Come funziona Keras#
Un modello Keras è composto da livelli come Dense, Conv2D, LSTM e MultiHeadAttention, ciascuno con i propri pesi. Keras offre tre modi per assemblarli: l'API Sequential per una semplice pila, l'API funzionale per grafi con diramazioni, livelli condivisi o più ingressi e la sottoclasse keras.Model per avere il pieno controllo del passaggio in avanti. Un modello compilato viene addestrato con fit, che gestisce il raggruppamento in batch, la retropropagazione, le metriche, i dati di convalida e i callback per il salvataggio dei checkpoint o l'arresto anticipato, quindi valuta nuovi dati con evaluate e predict. Questo codice addestra un piccolo classificatore di cifre sul dataset MNIST incluso in 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}")Dopo due epoche, stampa un'accuratezza di test di circa 0.96; modificando "torch" in "jax" o "tensorflow", lo stesso modello viene eseguito su un altro framework senza modificare nessun'altra riga.
Keras 3 e i suoi backend#
In origine Keras funzionava con diversi motori, tra cui Theano, TensorFlow e CNTK. Keras 2.3, rilasciata nel settembre 2019, è stata l'ultima versione con più backend; in seguito, lo sviluppo è confluito in TensorFlow come tf.keras. Keras 3 ha ripristinato l'indipendenza dai backend: livelli e modelli vengono scritti usando keras.ops, un insieme di operazioni in stile NumPy implementato da ciascun backend, così un modello salvato nel formato .keras può essere ricaricato e addestrato con qualsiasi backend. Con il backend PyTorch, un modello Keras è anche un torch.nn.Module utilizzabile in un ciclo di addestramento PyTorch personalizzato; inoltre, da Keras 3.8, un backend OpenVINO dedicato all'inferenza esegue i modelli addestrati su hardware Intel.
Da TensorFlow 2.16, l'installazione di TensorFlow installa Keras 3, mentre il codice che richiede ancora Keras 2 usa il pacchetto separato tf_keras. Anche i convertitori di modelli supportano Keras: quando Ultralytics YOLO esporta YOLO26 in un TensorFlow SavedModel, il convertitore onnx2tf ricostruisce la rete PyTorch dal grafo ONNX come modello Keras, livello per livello, prima di salvarla.
Modelli preaddestrati in KerasHub#
KerasHub offre implementazioni Keras 3 di architetture popolari con checkpoint preaddestrati, come ResNet per le immagini, BERT per il testo e i modelli linguistici di grandi dimensioni Gemma. Il nome di una configurazione predefinita carica un modello pronto per il transfer learning: keras_hub.models.ImageClassifier.from_preset("resnet_50_imagenet") restituisce un classificatore addestrato su ImageNet che il fine-tuning adatta a un nuovo dataset con la stessa chiamata fit usata sopra. Come il resto di Keras 3, i modelli KerasHub funzionano con tutti e tre i backend di addestramento.
Keras a confronto con TensorFlow e PyTorch#
- TensorFlow: un framework completo con runtime, compilatore e strumenti di distribuzione propri, come TensorFlow Serving e LiteRT. Keras è l'API con cui molti utenti di TensorFlow scrivono i modelli, mentre TensorFlow è uno dei motori che eseguono il codice Keras.
- PyTorch: un framework in cui gli utenti in genere scrivono da sé il ciclo di addestramento o usano una libreria come PyTorch Lightning. Keras fornisce il ciclo tramite
fite può usare PyTorch come backend, quindi i due non si escludono a vicenda. - JAX: la libreria di Google che offre trasformazioni di funzioni componibili per la differenziazione, la compilazione XLA e la vettorializzazione. JAX non ha API integrate per i livelli o l'addestramento; Keras è uno dei modi per aggiungerne una.










