Keras
Keras es una API de alto nivel de Python para crear y entrenar redes neuronales que, desde Keras 3, ejecuta el mismo código en JAX, TensorFlow o PyTorch.
Keras es una API de alto nivel de Python y código abierto para crear y entrenar redes neuronales. François Chollet la publicó en marzo de 2015 para que los experimentos de aprendizaje profundo fueran rápidos de escribir: un modelo es una pila o un grafo de capas, compile establece el optimizador, la función de pérdida y las métricas, y fit ejecuta el bucle de entrenamiento. Keras se convirtió en la API oficial de alto nivel de TensorFlow, y Keras 3, publicado en noviembre de 2023, ejecuta el mismo código de modelo en JAX, TensorFlow o PyTorch, según cuál se elija al importar Keras. Su código breve y legible hace que sea una opción habitual para la enseñanza, la creación de prototipos y las competiciones de Kaggle, así como para modelos de producción de clasificación de imágenes y procesamiento del lenguaje natural.
Cómo funciona Keras#
Un modelo de Keras se construye a partir de capas como Dense, Conv2D, LSTM y MultiHeadAttention, cada una con sus propios pesos. Keras ofrece tres formas de ensamblarlas: la API Sequential para una pila sencilla, la API funcional para grafos con bifurcaciones, capas compartidas o varias entradas, y la subclasificación de keras.Model para controlar por completo el paso hacia delante. Un modelo compilado se entrena con fit, que gestiona el procesamiento por lotes, la retropropagación, las métricas, los datos de validación y las devoluciones de llamada para guardar puntos de control o detener el entrenamiento antes de tiempo; después, evalúa datos nuevos con evaluate y predict. Este código entrena un pequeño clasificador de dígitos con el conjunto de datos MNIST que se incluye con 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}")Tras dos épocas, imprime una precisión de prueba de aproximadamente 0.96, y cambiar "torch" por "jax" o "tensorflow" ejecuta el mismo modelo en otro framework sin modificar ninguna otra línea.
Keras 3 y sus backends#
Keras se ejecutaba originalmente en varios motores, entre ellos Theano, TensorFlow y CNTK. Keras 2.3, publicado en septiembre de 2019, fue su última versión compatible con varios backends; después, el desarrollo pasó a TensorFlow como tf.keras. Keras 3 recuperó la independencia del backend: las capas y los modelos se escriben con keras.ops, un conjunto de operaciones al estilo de NumPy que implementa cada backend, de modo que un modelo guardado en el formato .keras se puede volver a cargar y entrenar en cualquier backend. Con el backend de PyTorch, un modelo de Keras también es un torch.nn.Module que puede utilizar un bucle de entrenamiento personalizado de PyTorch, y desde Keras 3.8, un backend de inferencia OpenVINO ejecuta modelos entrenados en hardware Intel.
Desde TensorFlow 2.16, instalar TensorFlow instala Keras 3, y el código que aún necesita Keras 2 utiliza el paquete independiente tf_keras. Los conversores de modelos también admiten Keras: cuando Ultralytics YOLO exporta YOLO26 a un TensorFlow SavedModel, el conversor onnx2tf reconstruye la red PyTorch a partir de su grafo ONNX como modelo de Keras, capa por capa, antes de guardarlo.
Modelos preentrenados en KerasHub#
KerasHub ofrece implementaciones de arquitecturas populares para Keras 3 con puntos de control preentrenados, como ResNet para imágenes, BERT para texto y los grandes modelos de lenguaje Gemma. Un nombre de preajuste carga un modelo listo para el aprendizaje por transferencia: keras_hub.models.ImageClassifier.from_preset("resnet_50_imagenet") devuelve un clasificador entrenado con ImageNet que el ajuste adapta a un nuevo conjunto de datos con la misma llamada fit que se ha usado arriba. Como el resto de Keras 3, los modelos de KerasHub se ejecutan en cualquiera de los tres backends de entrenamiento.
Keras frente a TensorFlow y PyTorch#
- TensorFlow: Un framework completo con su propio entorno de ejecución, compilador y herramientas de implementación, como TensorFlow Serving y LiteRT. Keras es la API con la que escriben modelos muchos usuarios de TensorFlow, y TensorFlow es uno de los motores que ejecutan código de Keras.
- PyTorch: Un framework en el que los usuarios suelen escribir el bucle de entrenamiento por su cuenta o utilizar una biblioteca como PyTorch Lightning. Keras proporciona el bucle mediante
fity puede usar PyTorch como backend, por lo que no son excluyentes. - JAX: La biblioteca de Google de transformaciones de funciones componibles para diferenciación, compilación XLA y vectorización. JAX no incluye una API integrada para capas o entrenamiento, y Keras es una de las formas de añadirla.










