Hay un nombre que aparece en prácticamente todos los proyectos de Inteligencia Artificial y Deep Learning del mundo: TensorFlow. Lo usan Google, Airbnb, Twitter, Dropbox y miles de startups para construir desde sistemas de recomendación hasta vehículos autónomos.
Y sin embargo, muchos principiantes lo ven como algo intimidante, reservado solo para matemáticos y doctores en IA. Nada más lejos de la realidad. Con las herramientas actuales, puedes entrenar tu primera red neuronal con TensorFlow en menos de 30 líneas de código, sin necesitar un doctorado.
En este artículo vas a entender qué es TensorFlow, cómo funciona por dentro, qué papel juega Keras y cómo construir y entrenar tu primer modelo de clasificación desde cero, paso a paso.
Antes de empezar, si no tienes claro qué es el Machine Learning y cómo se relaciona con el Deep Learning, te recomendamos leer ese artículo primero. Y si quieres entender la diferencia entre aprendizaje supervisado y no supervisado, también te vendrá muy bien como contexto.
¿Qué es TensorFlow?
TensorFlow es una biblioteca de código abierto para el aprendizaje automático y el Deep Learning desarrollada por el equipo de Google Brain y lanzada públicamente el 9 de noviembre de 2015. Es la herramienta más usada en el mundo para construir, entrenar y desplegar modelos de inteligencia artificial.
Su nombre viene de dos palabras:
- 🔢 Tensor — la estructura de datos fundamental con la que trabaja (matrices multidimensionales)
- 🌊 Flow — el flujo de operaciones que se ejecutan sobre esos tensores
Antes de TensorFlow, construir una red neuronal desde cero requería implementar manualmente la propagación hacia adelante, el cálculo del gradiente, la retropropagación y la actualización de pesos. Era complejo, propenso a errores y difícil de escalar.
TensorFlow abstrae toda esa complejidad matemática y te permite enfocarte en el diseño del modelo. Calcula automáticamente los gradientes, optimiza las operaciones para correr en GPUs y facilita el despliegue en producción.
¿Qué es un Tensor? La unidad fundamental
Para entender TensorFlow necesitas entender primero qué es un tensor. Un tensor es simplemente un array multidimensional — una generalización de los conceptos que ya conoces:
# Escalares, vectores, matrices y tensores — la misma idea en más dimensiones
import tensorflow as tf
import numpy as np
# Escalar (0 dimensiones)
escalar = tf.constant(42)
print(escalar) # tf.Tensor(42, shape=(), dtype=int32)
print(escalar.ndim) # 0
# Vector (1 dimensión)
vector = tf.constant([1.0, 2.0, 3.0, 4.0])
print(vector) # tf.Tensor([1. 2. 3. 4.], shape=(4,), dtype=float32)
print(vector.ndim) # 1
# Matriz (2 dimensiones)
matriz = tf.constant([[1, 2, 3],
[4, 5, 6]])
print(matriz.shape) # (2, 3)
print(matriz.ndim) # 2
# Tensor 3D (imágenes: alto × ancho × canales de color)
imagen = tf.constant(np.random.rand(28, 28, 3)) # imagen 28x28 RGB
print(imagen.shape) # (28, 28, 3)
print(imagen.ndim) # 3
# Tensor 4D (lote de imágenes: batch × alto × ancho × canales)
lote_imagenes = tf.constant(np.random.rand(32, 28, 28, 3)) # 32 imágenes
print(lote_imagenes.shape) # (32, 28, 28, 3)
print(lote_imagenes.ndim) # 4En Deep Learning, los datos siempre viajan como tensores. Un conjunto de imágenes es un tensor 4D. Una secuencia de palabras es un tensor 2D o 3D. Los pesos de una red neuronal son tensores de distintas formas.
Operaciones con tensores
import tensorflow as tf
a = tf.constant([[1, 2], [3, 4]], dtype=tf.float32)
b = tf.constant([[5, 6], [7, 8]], dtype=tf.float32)
# Operaciones matemáticas
print(tf.add(a, b)) # suma elemento a elemento
print(tf.multiply(a, b)) # multiplicación elemento a elemento
print(tf.matmul(a, b)) # producto matricial
# Equivalentes con operadores Python:
print(a + b)
print(a * b)
print(a @ b) # @ es el operador de producto matricial
# Funciones estadísticas
print(tf.reduce_sum(a)) # suma todos los elementos
print(tf.reduce_mean(a)) # media
print(tf.reduce_max(a)) # máximo
# Conversión entre TensorFlow y NumPy
numpy_array = a.numpy() # tensor → array de NumPy
tf_tensor = tf.constant(numpy_array) # array → tensorTensorFlow 2.x — el punto de inflexión
TensorFlow 1.x era potente pero notoriamente difícil de usar. Requería definir un "grafo computacional" primero y ejecutarlo después en una "sesión". Era confuso y poco intuitivo.
En 2019 llegó TensorFlow 2.0, que cambió todo. Adoptó el modo eager execution: las operaciones se ejecutan inmediatamente, como código Python normal, sin necesidad de construir grafos ni sesiones.
# TensorFlow 1.x — tedioso y confuso (ya no se usa)
import tensorflow as tf
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
suma = tf.add(a, b)
with tf.Session() as sess:
resultado = sess.run(suma, feed_dict={a: 3.0, b: 4.0})
print(resultado) # 7.0
# TensorFlow 2.x — simple e intuitivo
import tensorflow as tf
a = tf.constant(3.0)
b = tf.constant(4.0)
print(a + b) # tf.Tensor(7.0, ...) ← inmediato, sin sesionesEn 2026 se usa exclusivamente TensorFlow 2.x. Si encuentras tutoriales con tf.Session() o tf.placeholder(), son contenido anticuado de TF 1.x.
Keras — la API de alto nivel
Si TensorFlow es el motor, Keras es el volante. Keras es una API de alto nivel integrada oficialmente en TensorFlow desde la versión 2.0 que simplifica enormemente la construcción de modelos de Deep Learning.
Con Keras, en lugar de implementar manualmente capas, funciones de activación y retropropagación, defines el modelo de forma declarativa:
import tensorflow as tf
from tensorflow import keras
# Sin Keras: implementación manual de cada capa (complejo)
# Con Keras: diseño declarativo en pocas líneas
modelo = keras.Sequential([
keras.layers.Dense(128, activation='relu', input_shape=(784,)),
keras.layers.Dropout(0.2),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
# Configurar el proceso de entrenamiento
modelo.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# Ver el resumen del modelo
modelo.summary()Eso es todo lo que necesitas para definir una red neuronal con 3 capas. Keras se encarga del resto: inicialización de pesos, cálculo de gradientes, retropropagación y actualización de parámetros.
Instalación de TensorFlow
Opción 1: Google Colab (recomendada para empezar)
Como ya vimos en nuestra guía sobre las mejores herramientas de IA gratis, Google Colab tiene TensorFlow preinstalado. Simplemente abre colab.research.google.com y empieza a escribir código. Sin instalar nada.
# En Google Colab, TensorFlow ya está instalado
# Solo necesitas importarlo:
import tensorflow as tf
print(tf.__version__) # 2.17.0 o similarOpción 2: Instalación local con pip
# Instalar TensorFlow en tu computadora
pip install tensorflow
# Para GPU (requiere NVIDIA con CUDA configurado)
pip install tensorflow[and-cuda]
# Verificar instalación
python -c "import tensorflow as tf; print(tf.__version__)"
# Ver si hay GPU disponible
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"💡 Tip: Si eres principiante, empieza con Google Colab. Evitas problemas de compatibilidad con versiones de CUDA, drivers de GPU y dependencias del sistema operativo.
Tu primer modelo con TensorFlow — clasificador de dígitos MNIST
El "Hola Mundo" del Deep Learning es el dataset MNIST: 70,000 imágenes de dígitos escritos a mano (0-9) en escala de grises de 28×28 píxeles. El objetivo es entrenar un modelo que reconozca el dígito en cada imagen.
Este es exactamente el tipo de problema de aprendizaje supervisado que ya conoces: tenemos datos etiquetados (imagen → número del 0 al 9) y el modelo aprende la relación.
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
print(f"TensorFlow {tf.__version__}")
# ============================================
# PASO 1: CARGAR Y EXPLORAR LOS DATOS
# ============================================
(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()
print(f"Datos de entrenamiento: {X_train.shape}") # (60000, 28, 28)
print(f"Datos de prueba: {X_test.shape}") # (10000, 28, 28)
print(f"Etiquetas únicas: {np.unique(y_train)}") # [0 1 2 3 4 5 6 7 8 9]
# Visualizar algunos ejemplos
fig, axes = plt.subplots(2, 5, figsize=(12, 5))
for i, ax in enumerate(axes.flat):
ax.imshow(X_train[i], cmap='gray')
ax.set_title(f"Dígito: {y_train[i]}")
ax.axis('off')
plt.tight_layout()
plt.show()
# ============================================
# PASO 2: PREPROCESAR LOS DATOS
# ============================================
# Normalizar: píxeles de [0, 255] a [0.0, 1.0]
# Esto acelera el entrenamiento y mejora la convergencia
X_train = X_train.astype('float32') / 255.0
X_test = X_test.astype('float32') / 255.0
# Aplanar las imágenes: de (28, 28) a (784,)
# Para una red neuronal densa, necesitamos un vector 1D
X_train = X_train.reshape(-1, 784) # -1 = "tantas filas como haya"
X_test = X_test.reshape(-1, 784)
print(f"X_train después del preproceso: {X_train.shape}") # (60000, 784)
print(f"X_test después del preproceso: {X_test.shape}") # (10000, 784)
# ============================================
# PASO 3: CONSTRUIR EL MODELO
# ============================================
modelo = keras.Sequential([
# Capa de entrada + primera capa oculta
keras.layers.Dense(
128,
activation='relu', # ReLU: max(0, x) — la activación más común
input_shape=(784,)
),
# Regularización: apaga el 20% de neuronas aleatoriamente en cada paso
# Previene el sobreajuste (overfitting)
keras.layers.Dropout(0.2),
# Segunda capa oculta
keras.layers.Dense(64, activation='relu'),
# Capa de salida: 10 neuronas (una por dígito 0-9)
# Softmax: convierte en probabilidades que suman 1
keras.layers.Dense(10, activation='softmax')
])
# Ver el resumen completo del modelo
modelo.summary()
# Total params: 108,298 parámetros entrenables
# ============================================
# PASO 4: COMPILAR EL MODELO
# ============================================
modelo.compile(
optimizer='adam', # algoritmo de optimización
loss='sparse_categorical_crossentropy', # función de pérdida para clasificación
metrics=['accuracy'] # métrica que queremos ver
)
# ============================================
# PASO 5: ENTRENAR EL MODELO
# ============================================
print("\n🏋️ Entrenando el modelo...")
historial = modelo.fit(
X_train, y_train,
epochs=10, # número de veces que el modelo ve todos los datos
batch_size=32, # número de ejemplos por actualización de pesos
validation_split=0.1, # reservar 10% del train para validación
verbose=1 # mostrar progreso
)
# Salida típica por época:
# Epoch 1/10: loss: 0.3124 - accuracy: 0.9089 - val_accuracy: 0.9723
# Epoch 5/10: loss: 0.0987 - accuracy: 0.9698 - val_accuracy: 0.9782
# Epoch 10/10: loss: 0.0641 - accuracy: 0.9806 - val_accuracy: 0.9798
# ============================================
# PASO 6: EVALUAR EL MODELO
# ============================================
print("\n📊 Evaluando en datos de prueba...")
loss, accuracy = modelo.evaluate(X_test, y_test, verbose=0)
print(f"Precisión en test: {accuracy*100:.2f}%")
print(f"Pérdida en test: {loss:.4f}")
# → Precisión típica: ~98%
# ============================================
# PASO 7: HACER PREDICCIONES
# ============================================
# Predecir las probabilidades para los primeros 5 ejemplos de test
probabilidades = modelo.predict(X_test[:5])
predicciones = np.argmax(probabilidades, axis=1) # clase con mayor probabilidad
print("\n🔮 Predicciones vs valores reales:")
for i in range(5):
print(f" Predicción: {predicciones[i]} | Real: {y_test[i]} | "
f"Confianza: {probabilidades[i][predicciones[i]]*100:.1f}%")
# ============================================
# PASO 8: GUARDAR EL MODELO
# ============================================
modelo.save('modelo_mnist.keras') # formato nativo de TF 2.x
print("\n💾 Modelo guardado en 'modelo_mnist.keras'")
# Cargar el modelo guardado
# modelo_cargado = keras.models.load_model('modelo_mnist.keras')
# prediccion = modelo_cargado.predict(X_test[0:1])Visualizar el entrenamiento
import matplotlib.pyplot as plt
# Graficar la evolución del entrenamiento
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))
# Precisión
ax1.plot(historial.history['accuracy'], label='Entrenamiento')
ax1.plot(historial.history['val_accuracy'], label='Validación')
ax1.set_title('Precisión por época')
ax1.set_xlabel('Época')
ax1.set_ylabel('Precisión')
ax1.legend()
ax1.grid(True)
# Pérdida
ax2.plot(historial.history['loss'], label='Entrenamiento')
ax2.plot(historial.history['val_loss'], label='Validación')
ax2.set_title('Pérdida por época')
ax2.set_xlabel('Época')
ax2.set_ylabel('Pérdida')
ax2.legend()
ax2.grid(True)
plt.tight_layout()
plt.show()
# Si val_accuracy >> accuracy: underfitting (modelo demasiado simple)
# Si accuracy >> val_accuracy: overfitting (modelo memoriza, no generaliza)Los componentes clave explicados
🏗️ Las capas de Keras
# Las capas más usadas en Keras:
# Dense (totalmente conectada) — la más básica
keras.layers.Dense(units=128, activation='relu')
# Dropout — regularización, previene overfitting
keras.layers.Dropout(rate=0.2) # apaga 20% de neuronas
# Flatten — convierte tensores multidimensionales a 1D
keras.layers.Flatten() # (28, 28) → (784,)
# Conv2D — para imágenes (extrae características visuales)
keras.layers.Conv2D(filters=32, kernel_size=(3,3), activation='relu')
# MaxPooling2D — reduce dimensionalidad de las feature maps
keras.layers.MaxPooling2D(pool_size=(2,2))
# BatchNormalization — normaliza activaciones, acelera entrenamiento
keras.layers.BatchNormalization()
# Embedding — para texto, convierte tokens a vectores
keras.layers.Embedding(input_dim=10000, output_dim=128)⚡ Funciones de activación
# ReLU (Rectified Linear Unit) — la más usada en capas ocultas
# f(x) = max(0, x)
# Ventaja: simple, rápida, no tiene problema del gradiente desvaneciente
keras.layers.Dense(128, activation='relu')
# Sigmoid — para clasificación binaria (salida entre 0 y 1)
# f(x) = 1 / (1 + e^(-x))
keras.layers.Dense(1, activation='sigmoid')
# Softmax — para clasificación multiclase (suma de salidas = 1)
keras.layers.Dense(10, activation='softmax')
# Tanh — similar a sigmoid pero entre -1 y 1
keras.layers.Dense(64, activation='tanh')
# LeakyReLU — versión mejorada de ReLU para evitar "neuronas muertas"
keras.layers.LeakyReLU(alpha=0.01)🎯 Funciones de pérdida
# Clasificación binaria (2 clases: spam/no spam, enfermo/sano)
loss='binary_crossentropy'
# Clasificación multiclase con etiquetas enteras (0, 1, 2, ...)
loss='sparse_categorical_crossentropy'
# Clasificación multiclase con etiquetas one-hot ([0,0,1,0,...])
loss='categorical_crossentropy'
# Regresión (predicción de valores continuos: precio, temperatura)
loss='mean_squared_error' # MSE
loss='mean_absolute_error' # MAE🔧 Optimizadores
# Adam — el más usado, funciona bien en la mayoría de casos
optimizer='adam'
# SGD (Stochastic Gradient Descent) — más controlable, a veces mejor
optimizer=tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9)
# RMSprop — bueno para RNNs
optimizer='rmsprop'
# AdaGrad — adapta la tasa de aprendizaje por parámetro
optimizer='adagrad'Ejemplo avanzado: red convolucional para imágenes
Las redes densas funcionan para imágenes pequeñas como MNIST. Para imágenes más complejas, se usan Redes Neuronales Convolucionales (CNN) que aprenden características visuales jerárquicas: bordes → formas → objetos.
import tensorflow as tf
from tensorflow import keras
# Cargar CIFAR-10: 60,000 imágenes de color 32×32 en 10 categorías
(X_train, y_train), (X_test, y_test) = keras.datasets.cifar10.load_data()
# Normalizar
X_train = X_train.astype('float32') / 255.0
X_test = X_test.astype('float32') / 255.0
# Clases: avión, auto, pájaro, gato, ciervo, perro, rana, caballo, barco, camión
clases = ['avión', 'auto', 'pájaro', 'gato', 'ciervo',
'perro', 'rana', 'caballo', 'barco', 'camión']
# Modelo CNN
modelo_cnn = keras.Sequential([
# Bloque 1: extrae características de bajo nivel (bordes, texturas)
keras.layers.Conv2D(32, (3,3), activation='relu', padding='same',
input_shape=(32, 32, 3)),
keras.layers.Conv2D(32, (3,3), activation='relu'),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Dropout(0.25),
# Bloque 2: extrae características de alto nivel (formas, partes)
keras.layers.Conv2D(64, (3,3), activation='relu', padding='same'),
keras.layers.Conv2D(64, (3,3), activation='relu'),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Dropout(0.25),
# Clasificador
keras.layers.Flatten(),
keras.layers.Dense(512, activation='relu'),
keras.layers.Dropout(0.5),
keras.layers.Dense(10, activation='softmax') # 10 clases
])
modelo_cnn.compile(
optimizer=keras.optimizers.Adam(learning_rate=0.001),
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
modelo_cnn.summary()
# Total params: ~1.25M parámetros
# Entrenar
historial_cnn = modelo_cnn.fit(
X_train, y_train,
epochs=20,
batch_size=64,
validation_data=(X_test, y_test)
)
# Precisión típica: ~75-80% en CIFAR-10 con esta arquitecturaTensorFlow vs PyTorch — ¿cuál elegir?
La pregunta más frecuente en Deep Learning. Aquí va la comparativa honesta:
| Aspecto | TensorFlow / Keras | PyTorch |
|---|---|---|
| Creador | Google Brain (2015) | Meta AI (2016) |
| API principal | Keras (muy simple) | API propia (más explícita) |
| Facilidad para principiantes | ⭐⭐⭐⭐⭐ Más fácil con Keras | ⭐⭐⭐⭐ Curva media |
| Despliegue en producción | ⭐⭐⭐⭐⭐ TF Serving, TFLite, TFJS | ⭐⭐⭐⭐ TorchServe |
| Investigación académica | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ Dominante en papers |
| Comunidad | Enorme (industria) | Enorme (academia + industria) |
| Tendencia 2026 | Muy usado en industria | Creciendo aceleradamente |
| Mobile / Edge | ✅ TFLite muy maduro | 🔶 ExecuTorch en desarrollo |
| JavaScript | ✅ TensorFlow.js | ❌ No tiene equivalente |
💡 La respuesta práctica de 2026: para principiantes, empieza con TensorFlow/Keras porque la API de Keras es más sencilla e intuitiva. Para investigación o si quieres trabajo en startups de IA puras, PyTorch está creciendo más. En la práctica, los conceptos son transferibles — aprender uno hace que el otro sea fácil de adoptar.
El ecosistema completo de TensorFlow
TensorFlow (el ecosistema completo)
│
├── tf.keras ← API de alto nivel para modelos
├── TensorFlow Datasets (TFDS) ← miles de datasets listos para usar
├── TensorBoard ← visualización del entrenamiento
├── TensorFlow Hub ← modelos preentrenados para transfer learning
├── TensorFlow Lite (TFLite) ← modelos en móviles y dispositivos edge
├── TensorFlow.js (TFJS) ← modelos en el navegador con JavaScript
├── TensorFlow Extended (TFX) ← pipelines de ML en producción
└── tf.data ← pipelines eficientes de carga de datosTensorBoard — visualiza el entrenamiento
import datetime
# Configurar TensorBoard
log_dir = "logs/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(
log_dir=log_dir, histogram_freq=1
)
# Entrenar con TensorBoard activado
modelo.fit(
X_train, y_train,
epochs=10,
callbacks=[tensorboard_callback] # ← añadir el callback
)
# Lanzar TensorBoard en la terminal:
# tensorboard --logdir logs/
# En Google Colab:
# %load_ext tensorboard
# %tensorboard --logdir logs/Transfer Learning — usar modelos preentrenados
# En lugar de entrenar desde cero, usa un modelo preentrenado
# que ya conoce millones de imágenes y aprovecha ese conocimiento
base_modelo = keras.applications.MobileNetV2(
input_shape=(224, 224, 3),
include_top=False, # sin la capa de clasificación final
weights='imagenet' # pesos preentrenados en ImageNet (1.4M imágenes)
)
# Congelar los pesos del modelo base
base_modelo.trainable = False
# Añadir tu propio clasificador encima
modelo_transfer = keras.Sequential([
base_modelo,
keras.layers.GlobalAveragePooling2D(),
keras.layers.Dense(256, activation='relu'),
keras.layers.Dropout(0.3),
keras.layers.Dense(5, activation='softmax') # 5 clases propias
])
# Este modelo puede clasificar tus propias categorías con muy pocos datos
# aprovechando todo lo que MobileNetV2 aprendió en ImageNetLa ruta de aprendizaje recomendada
Para dominar TensorFlow de forma progresiva, te recomendamos este orden:
- Fundamentos de Python — TensorFlow es una librería Python. Sin bases sólidas del lenguaje, el código no tendrá sentido. Consulta nuestra guía sobre funciones en Python y listas en Python.
- Machine Learning básico con scikit-learn — entiende el flujo de entrenamiento, evaluación y predicción antes de pasar a redes neuronales. Lee nuestro artículo sobre cómo crear tu primer modelo de IA con Python.
- Conceptos de Deep Learning — neuronas, capas, funciones de activación, retropropagación. Comprende la diferencia entre IA, ML y Deep Learning.
- TensorFlow + Keras — empieza con MNIST, luego CIFAR-10, luego Transfer Learning.
- Proyectos reales — Kaggle tiene competencias perfectas para practicar con datos reales.
Errores comunes al empezar con TensorFlow
❌ No normalizar los datos
# ❌ Datos sin normalizar: entrenamiento lento o divergente
X_train = X_train # píxeles entre 0 y 255
# ✅ Siempre normalizar antes de entrenar
X_train = X_train.astype('float32') / 255.0 # entre 0 y 1❌ Confundir loss y accuracy
# La pérdida (loss) BAJA cuando el modelo mejora
# La precisión (accuracy) SUBE cuando el modelo mejora
# Ambas métricas deben mejorar a la vez
# ❌ Error: preocuparse solo por la accuracy del train
# ✅ Siempre mirar val_accuracy — si baja mientras train_accuracy sube → overfitting❌ Olvidar reshape al pasar de imágenes a capas Dense
# ❌ Error: las imágenes son 2D (28×28) y Dense necesita 1D
# modelo.predict(X_test) → shape error
# ✅ Aplanar las imágenes antes
X_train = X_train.reshape(-1, 784) # (60000, 28, 28) → (60000, 784)
# O añadir keras.layers.Flatten() como primera capa del modelo❌ Demasiadas épocas sin Early Stopping
# Entrenamiento excesivo → overfitting
# Usa Early Stopping para parar cuando la validación deja de mejorar:
callback_parada = keras.callbacks.EarlyStopping(
monitor='val_accuracy',
patience=5, # para si no mejora en 5 épocas seguidas
restore_best_weights=True # restaura el mejor modelo
)
modelo.fit(X_train, y_train, epochs=100,
callbacks=[callback_parada]) # parará antes de 100 si no mejoraResumen: lo que aprendiste hoy
- ✅ TensorFlow es la biblioteca de Deep Learning de Google, open source desde 2015
- ✅ Un tensor es un array multidimensional: escalar (0D), vector (1D), matriz (2D), tensor (nD)
- ✅ TensorFlow 2.x usa eager execution — el código se ejecuta inmediatamente como Python normal
- ✅ Keras es la API de alto nivel integrada en TF que simplifica la construcción de modelos
- ✅ El flujo básico es: cargar datos → preprocesar → construir modelo → compilar → entrenar → evaluar
- ✅ Las capas más usadas son: Dense, Conv2D, MaxPooling2D, Dropout, Flatten, BatchNormalization
- ✅ Adam es el optimizador por defecto más recomendado para empezar
- ✅ TensorBoard permite visualizar el entrenamiento con gráficas en tiempo real
- ✅ Transfer Learning permite reutilizar modelos preentrenados para tus propios datos
- ✅ Google Colab es el entorno recomendado para empezar — TF preinstalado y GPU gratuita
- ✅ Para principiantes: TensorFlow/Keras. Para investigación avanzada: PyTorch también es válido
🧪 ¿Tienes los fundamentos de Python necesarios para TensorFlow?
TensorFlow se usa con Python. Para sacarle todo el partido necesitas tener bien sólidos los fundamentos: funciones, listas, librerías y manejo de datos. Comprueba dónde estás:
👉 Test: Python Básico 👉 Test: Python Intermedio
¿Ya habías usado TensorFlow o era la primera vez que lo veías? ¿Llegaste a ejecutar el modelo MNIST? ¿Cuánta precisión obtuviste? Cuéntanos en los comentarios 👇 — respondemos todos. 🚀
No hay comentarios todavía. Sé el primero en compartir tu opinión.