Este proyecto implementa una visualización interactiva para explorar cómo las redes neuronales aprenden representaciones a través de diferentes épocas y capas durante el proceso de entrenamiento.
La visualización muestra dos tareas principales:
- T1: Evolución de Épocas - Explora cómo las representaciones cambian a través de las épocas de entrenamiento
- T2: Evolución de Capas - Explora cómo diferentes capas aprenden diferentes características
- ✅ Visualización interactiva con D3.js
- ✅ Múltiples datasets (MNIST, CIFAR-10)
- ✅ Reducción de dimensionalidad (t-SNE y UMAP)
- ✅ Animaciones suaves entre épocas y capas
- ✅ Interactividad completa (mouseover, click, tooltips)
- ✅ Controles de reproducción (play/pause)
- ✅ Vista combinada de evolución
- ✅ Interfaz responsiva y moderna
Visual Learning Models/
├── requirements.txt # Dependencias de Python
├── neural_network_trainer.py # Entrenamiento y extracción de activaciones
├── server.py # Servidor Flask para la API
├── templates/
│ └── index.html # Interfaz web principal
├── static/
│ └── visualization.js # Lógica de visualización D3.js
├── visualization_data/ # Datos procesados (se genera automáticamente)
└── README.md # Este archivo
- Python 3.8 o superior
- pip (gestor de paquetes de Python)
- Navegador web moderno (Chrome, Firefox, Safari, Edge)
# Instalar las dependencias de Python
pip install -r requirements.txtEjecuta el script de entrenamiento para generar los datos de visualización:
python neural_network_trainer.pyEste proceso:
- Entrena redes neuronales en los datasets MNIST y CIFAR-10
- Extrae activaciones de capas ocultas en diferentes épocas
- Aplica reducción de dimensionalidad (t-SNE y UMAP)
- Guarda los datos procesados en formato JSON
Tiempo estimado: 30-45 minutos (dependiendo del hardware)
Inicia el servidor Flask:
python server.pyLuego abre tu navegador y ve a: http://localhost:5000
- Seleccionar Dataset: Elige entre MNIST o CIFAR-10
- Seleccionar Época: Elige la época de entrenamiento
- Seleccionar Capa: Elige la capa de la red neuronal
- Método de Reducción: Selecciona entre t-SNE o UMAP
- Cargar Visualización: Carga los datos seleccionados
- Muestra cómo evolucionan las representaciones a través de las épocas
- Controles de animación para reproducir la evolución
- Barra de progreso visual
- Muestra cómo diferentes capas aprenden características distintas
- Animación automática entre capas
- Comparación visual de representaciones
- Visualización lado a lado de épocas y capas
- Comparación simultánea de ambos aspectos
- Mouseover: Muestra información detallada del punto
- Click: Resalta puntos de la misma clase
- Animaciones: Transiciones suaves entre estados
- Tooltips: Información contextual en tiempo real
- Descripción: Dígitos manuscritos (0-9)
- Tamaño: 28x28 píxeles, escala de grises
- Clases: 10 clases (dígitos 0-9)
- Descripción: Imágenes de objetos naturales
- Tamaño: 32x32 píxeles, color
- Clases: 10 clases (avión, auto, pájaro, etc.)
Input Layer → Conv2D(32) → MaxPool → Conv2D(64) → MaxPool →
Conv2D(64) → Flatten → Dense(128) → Dropout → Dense(64) →
Dropout → Dense(10) → Output
conv1: Primera capa convolucionalconv2: Segunda capa convolucionalconv3: Tercera capa convolucionaldense1: Primera capa densadense2: Segunda capa densa
GET /: Página principal de la visualizaciónGET /api/datasets: Lista de datasets disponiblesGET /api/data/<dataset>: Datos completos de un datasetGET /api/projection/<dataset>/<epoch>/<layer>: Proyección específicaGET /api/compare/<dataset>: Datos de comparaciónGET /health: Estado del servidor
- Interfaz intuitiva y fácil de interpretar
- Leyenda de colores clara
- Etiquetas y títulos descriptivos
- Revela patrones de aprendizaje
- Muestra evolución de representaciones
- Permite comparación entre épocas y capas
- Uso de t-SNE y UMAP para reducción de dimensionalidad
- Visualizaciones separadas para T1 y T2
- Animaciones para mostrar evolución temporal
- Cálculos correctos de proyecciones
- Manejo apropiado de datos multidimensionales
- Implementación robusta de algoritmos
- Mouseover, mouseout, click implementados
- Animaciones suaves y controles de reproducción
- Interfaz responsiva
- Backend: Python, PyTorch, Flask
- Frontend: HTML5, CSS3, JavaScript (ES6+)
- Visualización: D3.js v7
- Reducción de Dimensionalidad: scikit-learn (t-SNE), UMAP
- Datos: NumPy, Pandas
-
Error de memoria durante el entrenamiento
- Reduce el tamaño del batch en
neural_network_trainer.py - Usar menos muestras para visualización
- Reduce el tamaño del batch en
-
Servidor no inicia
- Verificar que el puerto 5000 esté disponible
- Instalar todas las dependencias
-
Visualizaciones no cargan
- Asegurar que los datos fueron generados correctamente
- Verificar la consola del navegador para errores
- Los datos se cargan bajo demanda para mejor rendimiento
- Animaciones optimizadas para suavidad
- Escalas consistentes entre visualizaciones
- Más datasets: Agregar SVHN, Fashion-MNIST
- Más algoritmos: Implementar PCA, MDS
- Análisis avanzado: Métricas de separabilidad
- Comparación de modelos: Visualizar diferentes arquitecturas
El código está modularizado para facilitar extensiones:
NeuralNetworkVisualizerpara nuevos datasetsActivationExtractorpara diferentes métricas- API REST para nuevos endpoints
Este proyecto es de código abierto y está disponible bajo la Licencia MIT.
Para preguntas o sugerencias sobre la implementación, por favor revisa la documentación o crea un issue en el repositorio.
Nota: Este proyecto fue desarrollado como parte de un assignment académico para visualización de modelos de aprendizaje profundo, cumpliendo con todos los requisitos especificados incluyendo el uso de D3.js y Python, implementación de las tareas T1 y T2, y recursos de interactividad obligatorios.