TensorFlow
TensorFlow es el framework de código abierto de Google para aprendizaje automático, que permite entrenar e implementar modelos en servidores, navegadores y teléfonos, con Keras como API de alto nivel.
TensorFlow es un marco de trabajo de código abierto para el aprendizaje automático (ML) que Google lanzó en noviembre de 2015 bajo la licencia Apache 2.0, después de que el equipo de Google Brain lo desarrollara para su investigación interna y sus productos internos. Los programas de aprendizaje profundo y otras aplicaciones numéricas representan los cálculos mediante operaciones sobre tensores, matrices multidimensionales de números, y TensorFlow calcula automáticamente las derivadas de estas operaciones, las compila en grafos optimizados y las ejecuta en CPUs, GPUs y TPUs. Su ecosistema abarca todo el ciclo de MLOps, desde el entrenamiento hasta el despliegue de modelos: Keras para definir modelos, TensorBoard para hacer un seguimiento de los experimentos, TensorFlow Serving para servir modelos en producción, TensorFlow.js para navegadores y LiteRT, antes conocido como TensorFlow Lite, para teléfonos y dispositivos integrados que ejecutan IA en el borde. En marzo de 2026, con TensorFlow 2.21, Google dijo que el trabajo futuro en TensorFlow se centraría en la seguridad y las correcciones de errores, las actualizaciones de dependencias y las contribuciones de la comunidad, y recomendó Keras 3, JAX o PyTorch para los nuevos proyectos de IA generativa.
Cómo funciona TensorFlow#
TensorFlow 1.x requería que los usuarios crearan primero un grafo computacional estático y luego lo ejecutaran en una sesión. TensorFlow 2.0, publicado en 2019, convirtió la ejecución eager en la opción predeterminada, de modo que las operaciones se ejecutan inmediatamente, como el código Python normal, y mantuvo los grafos como optimización: una función decorada con tf.function se traza una vez por cada firma de entrada para crear un grafo que TensorFlow puede optimizar, compilar con el compilador XLA y guardar en formato SavedModel para desplegarlo sin Python. tf.GradientTape registra las operaciones de una pasada hacia delante para que TensorFlow pueda calcular los gradientes para la retropropagación y el descenso del gradiente. Este código hace ambas cosas:
import tensorflow as tf
w = tf.Variable([[1.0], [-2.0]])
x = tf.constant([[3.0, 4.0]])
@tf.function # trace the Python function into a TensorFlow graph on the first call
def loss_fn(x):
print("Tracing") # Python code runs only while tracing, not on every call
return tf.reduce_sum((x @ w) ** 2)
# Record operations on a tape to compute the gradient of the loss with respect to w
with tf.GradientTape() as tape:
loss = loss_fn(x)
gradient = tape.gradient(loss, w)
loss_fn(x) # same input shape and dtype: reuses the traced graph without printing
print(f"loss {loss.numpy()}, gradient {gradient.numpy().ravel()}")Imprime Tracing una vez y después loss 25.0, gradient [-30. -40.]: la segunda llamada ejecutó el grafo almacenado en caché sin ejecutar el cuerpo de Python, y el gradiente de (3w₁ + 4w₂)² en w = (1, -2) es 2 × (-5) × (3, 4). Para el entrenamiento distribuido, las estrategias tf.distribute replican un modelo en varias GPU, particiones de TPU o máquinas.
El ecosistema de TensorFlow#
- Keras: La API de alto nivel para definir capas y modelos, y entrenarlos con
fit. Desde TensorFlow 2.16, instalar TensorFlow instala Keras 3, que también funciona con JAX y PyTorch. - TensorBoard: Un panel de control para ver curvas de pérdida, métricas, histogramas y grafos del modelo durante el entrenamiento. También lee registros generados por otros frameworks, y TensorFlow 2.21 ya no lo instala como dependencia.
- TensorFlow Serving: Un sistema para servir modelos que carga SavedModels y responde a solicitudes de predicción mediante gRPC o REST, con control de versiones para sustituir modelos en caliente.
- TFX: Un framework de canalizaciones para el aprendizaje automático en producción que encadena la validación de datos, el entrenamiento, la evaluación y el envío de un modelo aprobado al sistema de servicio.
- TensorFlow.js: Ejecuta y entrena modelos en el navegador y en Node.js, por lo que la inferencia puede realizarse en el dispositivo del usuario sin enviar datos a un servidor.
- LiteRT: El entorno de ejecución en el dispositivo de Google para Android, iOS, Linux integrado y microcontroladores; en septiembre de 2024 cambió su nombre de TensorFlow Lite. Ejecuta modelos
.tfliteconvertidos desde TensorFlow, PyTorch o JAX, con aceleración en GPU y NPU móviles.
TensorFlow frente a PyTorch y JAX#
- PyTorch frente a TensorFlow: PyTorch ha priorizado la ejecución eager desde el principio, y
torch.compileañade la compilación de grafos. Es el framework predeterminado para la mayoría del nuevo código de investigación y de los modelos con pesos abiertos, mientras que el punto fuerte de TensorFlow es su sólida pila de despliegue para servidores, navegadores y dispositivos móviles. - JAX: La biblioteca de Google con un estilo similar a NumPy y transformaciones componibles:
gradpara derivadas,jitpara la compilación XLA yvmappara la vectorización. Google entrena sus modelos Gemini con JAX. - Keras: Una API de alto nivel, no un motor independiente. El código de Keras 3 funciona con TensorFlow, JAX o PyTorch, por lo que la definición de un modelo no vincula un proyecto a un único framework.
Convertir modelos para entornos de ejecución de TensorFlow#
Los convertidores permiten utilizar las herramientas de despliegue de TensorFlow con modelos entrenados en otros frameworks: onnx2tf reconstruye un grafo ONNX como SavedModel de TensorFlow, jax2tf convierte funciones JAX en funciones de TensorFlow y el convertidor LiteRT Torch de Google genera modelos LiteRT directamente desde PyTorch. Los modelos Ultralytics YOLO están escritos en PyTorch y su modo de exportación utiliza estas rutas para YOLO26: format="saved_model" exporta a ONNX y lo convierte con onnx2tf en un SavedModel para TensorFlow Serving; format="edgetpu" compila un modelo INT8 para TPU Coral Edge, y format="litert" utiliza LiteRT Torch, por lo que no necesita instalar TensorFlow. Este código ejecuta la exportación a SavedModel:
from ultralytics import YOLO
# Load the smallest YOLO26 detection model
model = YOLO("yolo26n.pt")
# Convert through ONNX to a TensorFlow SavedModel directory
path = model.export(format="saved_model")
print(f"SavedModel: {path}")La exportación crea una carpeta yolo26n_saved_model, que tf.saved_model.load carga en Python y que el propio Ultralytics YOLO puede ejecutar con YOLO("yolo26n_saved_model").










