TensorFlow es una biblioteca de código abierto desarrollada por Google para realizar tareas de machine learning y deep learning.
Fue creada con el objetivo de facilitar la implementación de algoritmos de aprendizaje automático, especialmente redes neuronales, y proporcionar una plataforma robusta y escalable para construir modelos complejos. La rama estable TensorFlow 2.18 y posteriores integra Keras 3 como API multi-backend (TensorFlow, JAX, PyTorch y NumPy), compilación XLA y JIT, LiteRT como sucesor de TensorFlow Lite, TensorFlow Probability para modelos bayesianos, TensorFlow Hub con catálogo de Visión Transformers, modelos Mamba y modelos afinados desde Hugging Face, más TensorFlow Federated para aprendizaje federado.
Características principales de TensorFlow
- Keras 3 multi-backend: Keras 3 se instala como paquete independiente y permite ejecutar el mismo código sobre TensorFlow, JAX, PyTorch o NumPy eligiendo el backend con la variable
KERAS_BACKEND. - Flexibilidad: Permite definir y entrenar modelos desde un nivel bajo (construyendo la red neuronal a mano con GradientTape) hasta un nivel alto (usando Keras 3 para construir modelos rápidamente).
- Escalabilidad: Diseñado para ejecutarse en CPUs, GPUs, TPUs y dispositivos edge, con compilación XLA y entrenamiento distribuido mediante MirroredStrategy, MultiWorkerMirroredStrategy y TPUStrategy.
- Ecosistema amplio: TensorBoard para visualización, LiteRT para móvil y edge, TensorFlow.js para navegador, TF Serving para producción, TFX para pipelines MLOps y TensorFlow Probability para modelado probabilístico.
- APIs de modelo: Keras 3 ofrece tres formas de construir modelos: Sequential, Functional y Subclassing; el subclassing de capas y modelos comparte la misma base entre backends.
- Eager execution: La ejecución inmediata permite evaluar operaciones al instante, facilitando la depuración y el desarrollo iterativo.
- Integración con Hugging Face: Carga directa de modelos preentrenados de Visión Transformers, BERT, Llama y arquitecturas Mamba desde
transformerscon backend Keras 3.
APIs de construcción de modelos con Keras 3
Modelo Sequential
El modelo Sequential es una pila lineal de capas, ideal para redes sencillas. Con Keras 3 se importa desde keras y se puede ejecutar sobre cualquier backend.
import os
os.environ["KERAS_BACKEND"] = "tensorflow"
import keras
model = keras.Sequential([
keras.layers.Input(shape=(784,)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dropout(0.2),
keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
API Funcional
La API Funcional permite construir modelos con arquitecturas complejas, como múltiples entradas y salidas.
inputs = tf.keras.Input(shape=(784,))
x = tf.keras.layers.Dense(128, activation='relu')(inputs)
x = tf.keras.layers.Dropout(0.2)(x)
outputs = tf.keras.layers.Dense(10, activation='softmax')(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
Subclassing
El subclassing ofrece control total sobre la arquitectura del modelo.
class MiModelo(tf.keras.Model):
def __init__(self):
super().__init__()
self.dense1 = tf.keras.layers.Dense(128, activation='relu')
self.dropout = tf.keras.layers.Dropout(0.2)
self.dense2 = tf.keras.layers.Dense(10, activation='softmax')
def call(self, inputs, training=False):
x = self.dense1(inputs)
x = self.dropout(x, training=training)
return self.dense2(x)
Usos comunes de TensorFlow
- Clasificación de imágenes: Entrenar redes neuronales convolucionales (CNN) y Visión Transformers con transfer learning sobre EfficientNetV2, ConvNeXt o ViT.
- Procesamiento de lenguaje natural (NLP): Modelos Transformer, BERT y arquitecturas Mamba para clasificación, extracción de información y generación con integración Hugging Face.
- Series temporales: Redes recurrentes (LSTM, GRU), Transformers temporales y modelos probabilísticos con TensorFlow Probability.
- Generación de contenido: GANs, autoencoders variacionales y difusión para imagen y datos sintéticos.
- Despliegue multi-plataforma: TF Serving para servidores, LiteRT para móvil y edge, TensorFlow.js para navegador y TensorFlow Lite Micro para microcontroladores.
- Aprendizaje federado: Entrenamiento descentralizado sobre múltiples clientes con TensorFlow Federated preservando la privacidad de los datos.
- MLOps y TFX: Pipelines end-to-end con ExampleGen, Transform, Trainer, Evaluator y Pusher para automatizar ingesta, validación y publicación de modelos.
Pipeline de datos con tf.data
dataset = tf.data.Dataset.from_tensor_slices((features, labels))
dataset = dataset.shuffle(1000).batch(32).prefetch(tf.data.AUTOTUNE)
Callbacks para monitorizar el entrenamiento
callbacks = [
tf.keras.callbacks.EarlyStopping(patience=5, restore_best_weights=True),
tf.keras.callbacks.ModelCheckpoint('mejor_modelo.keras', save_best_only=True),
tf.keras.callbacks.TensorBoard(log_dir='./logs')
]
model.fit(train_data, epochs=100, callbacks=callbacks, validation_split=0.2)
Transfer learning con Keras 3
base_model = keras.applications.EfficientNetV2B0(
weights='imagenet', include_top=False, input_shape=(224, 224, 3)
)
base_model.trainable = False
model = keras.Sequential([
base_model,
keras.layers.GlobalAveragePooling2D(),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(num_classes, activation='softmax')
])
Mixed precisión y XLA
import keras
keras.mixed_precision.set_global_policy('mixed_float16')
@tf.function(jit_compile=True)
def paso_entrenamiento(batch):
return model(batch, training=True)
Export multi-plataforma
# LiteRT (antes TensorFlow Lite)
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()
# SavedModel para TF Serving
model.export('saved_model/1')
# TensorFlow.js
import tensorflowjs as tfjs
tfjs.converters.save_keras_model(model, 'modelo_tfjs')
Recursos adicionales
- Documentación oficial: tensorflow.org
- Keras 3: keras.io
- LiteRT: ai.google.dev/edge/litert
- TensorFlow Hub: tensorflow.org/hub