0% encontró este documento útil (0 votos)
2 vistas6 páginas

Guía de Red Neuronal con Keras y TensorFlow

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas6 páginas

Guía de Red Neuronal con Keras y TensorFlow

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

APUNTES RN.

md 2025-11-01

🧠 Guía Completa: Red Neuronal con Keras y


TensorFlow
📦 Instalación del Entorno
Antes de comenzar, necesitamos las herramientas correctas:

!pip install tensorflow


!pip install keras

💡 ¿Qué estamos instalando?

TensorFlow: El motor que ejecuta los cálculos


Keras: La interfaz amigable que facilita todo

🔧 Paso 1: Importación de Bibliotecas

# Dataset y visualización
from [Link] import mnist # 🖼 60k imágenes de dígitos escritos a
mano
import [Link] as plt # 📊 Para visualizar datos

# Procesamiento numérico
import numpy as np # 🧮 Manejo eficiente de matrices

# Construcción del modelo


from keras import utils # 🏷 Conversión de etiquetas
from [Link] import Sequential # 🧱 Arquitectura secuencial
from [Link] import Dense, Flatten # 🔗 Capas de la red

# Entrenamiento
from [Link] import Adam # ⚡ Optimizador adaptativo

# Evaluación
from [Link] import confusion_matrix, classification_report,
accuracy_score

📥 Paso 2: Preparación del Dataset


2.1 Carga y Normalización

# Cargar dataset MNIST (28x28 píxeles, escala de grises)


(x_train, y_train), (x_test, y_test) = mnist.load_data()
1/6
APUNTES [Link] 2025-11-01

# Normalizar píxeles de [0, 255] a [0.0, 1.0]


x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

# Convertir etiquetas a formato one-hot encoding


y_train = utils.to_categorical(y_train, num_classes=10)
y_test = utils.to_categorical(y_test, num_classes=10)

🎯 ¿Por qué normalizar?

Analogía: Imagina que tienes ingredientes para una receta. Unos están en gramos, otros en kilos. La red
neuronal necesita que todo esté en la misma "unidad de medida" para aprender eficientemente.

Valores originales: 0-255 (demasiado grandes)


Valores normalizados: 0.0-1.0 (rango óptimo)
Beneficio: Entrenamiento más rápido y estable

🏷 ¿Qué es One-Hot Encoding?

Antes: y = [3, 7, 2]
Después: y = [[0,0,0,1,0,0,0,0,0,0], # 3
[0,0,0,0,0,0,0,1,0,0], # 7
[0,0,1,0,0,0,0,0,0,0]] # 2

🏗 Paso 3: Arquitectura del Modelo

modelo = Sequential([
Flatten(input_shape=(28, 28)), # 🔄 Convierte 28x28 matriz → 784 vector
Dense(128, activation='relu'), # 🧩 128 neuronas, función ReLU
Dense(64, activation='relu'), # 🧩 64 neuronas, función ReLU
Dense(10, activation='softmax') # 🎯 10 neuronas (0-9), probabilidades
])

🌊 Flujo de Información

Input (28×28 imagen)



[Flatten] → Vector de 784 valores

[Dense 128 + ReLU] → Extracción de características

[Dense 64 + ReLU] → Refinamiento de patrones

[Dense 10 + Softmax] → Probabilidades por clase

2/6
APUNTES [Link] 2025-11-01


Output: [0.01, 0.02, 0.85, ...] ← "85% seguro que es un 2"

⚙ Paso 4: Compilación del Modelo

# Configurar el optimizador
adam = Adam(learning_rate=0.001)

# Compilar el modelo
[Link](
optimizer=adam, # 🚀 Cómo ajustar los pesos
loss='categorical_crossentropy', # 📉 Qué tan "equivocado" está
metrics=['accuracy'] # 📊 Qué medir (precisión)
)

🎓 Desglose de Parámetros

Componente Función Analogía

optimizer Ajusta los pesos de la red GPS que busca la mejor ruta

loss Calcula el error Termómetro que mide cuán "enfermo" está el modelo

metrics Mide rendimiento Calificación final del examen

🏋 Paso 5: Entrenamiento y Evaluación

# Entrenar el modelo
history = [Link](
x_train, y_train,
batch_size=32,
epochs=15,
validation_data=(x_test, y_test)
)

# Evaluar precisión final


val_loss, val_accuracy = [Link](x_test, y_test)
print(f"✅ Precisión en test: {val_accuracy * 100:.2f}%")

📈 ¿Qué pasa durante el entrenamiento?

Epoch 1/15: Aprende patrones básicos (líneas, curvas)


Epoch 5/15: Reconoce formas parciales de números
Epoch 10/15: Afina detalles y distingue números similares
Epoch 15/15: Optimiza para máxima precisión

3/6
APUNTES [Link] 2025-11-01

📊 Tabla de Hiperparámetros Clave


Parámetro ¿Qué hace? Opciones Comunes Cuándo usar cada uno

ReLU: max(0, x) - rápida ReLU: capas ocultas


y efectiva (default)
Sigmoid: 1/(1+e^-x) - Sigmoid: clasificación
🎨 Función de Define cómo "dispara" salida [0,1] binaria
Activación una neurona Softmax: convierte a Softmax: última capa
probabilidades multiclase
Tanh: [-1, 1] centrada Tanh: cuando necesitas
en 0 valores negativos

categorical_crossentropy:
categorical: MNIST,
multiclase
clasificar animales
📉 Función de Mide qué tan "perdido" binary_crossentropy:
binary: spam/no spam
Pérdida está el modelo binaria
MSE: predecir precios
MSE: regresión
MAE: cuando hay outliers
MAE: regresión robusta

Adam: 95% de casos


(start here)
Adam: adaptativo, popular
SGD: cuando tienes
SGD: simple, clásico
mucho tiempo
🚀 Optimizador Estrategia para mejorar RMSprop: para RNNs
RMSprop: redes
AdaGrad: para datos
recurrentes
dispersos
AdaGrad: procesamiento
de texto

0.001: punto de partida


0.001 (default Adam) ideal
📏 Learning Tamaño del "paso" al
0.01 (agresivo) 0.01: si converge lento
Rate aprender
0.0001 (conservador) 0.0001: si hace "saltos"
erráticos

32: balance
Ejemplos procesados por velocidad/precisión
📦 Batch Size 32, 64, 128, 256
iteración 64-128: GPUs modernas
256+: datasets enormes

10-20: datasets grandes


10-50 común 50+: pocos datos,
Veces que ve todo el
🔄 Epochs 100+ para tareas necesita "memorizar"
dataset
complejas early stopping: si tienes
validation

4/6
APUNTES [Link] 2025-11-01

Parámetro ¿Qué hace? Opciones Comunes Cuándo usar cada uno

accuracy: cuando clases


accuracy: clasificación
balanceadas
precision/recall:
📊 Métricas Cómo medir éxito F1-score: detección
desbalance
fraude
MAE/MSE: regresión
MSE: predicción continua

💡 Tips Pro para el Futuro


🎯 Optimización Avanzada

# 1. Early Stopping (detener si no mejora)


from [Link] import EarlyStopping

early_stop = EarlyStopping(monitor='val_loss', patience=3)


[Link](..., callbacks=[early_stop])

# 2. Learning Rate Scheduler (ajustar LR dinámicamente)


from [Link] import ReduceLROnPlateau

reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=2)

🐛 Debugging Common Issues

Problema Síntoma Solución

Overfitting Train acc ↑↑, Val acc ↓↓ Dropout, más datos, early stopping

Underfitting Ambas acc bajas Más capas, más epochs, mejor arquitectura

Loss = NaN Números explotan Reducir learning rate, normalizar datos

Muy lento Epochs tardan horas Reducir batch_size, usar GPU

🎓 Resumen Ejecutivo

# Tu receta completa en 10 líneas


modelo = Sequential([
Flatten(input_shape=(28,28)),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])

[Link](optimizer=Adam(0.001), loss='categorical_crossentropy', metrics=


['accuracy'])
[Link](x_train, y_train, batch_size=32, epochs=15, validation_data=(x_test,
y_test))

5/6
APUNTES [Link] 2025-11-01

Siguiente nivel: Experimenta cambiando hiperparámetros y observa cómo cambia el resultado. ¡El
aprendizaje profundo es iterativo!

6/6

También podría gustarte