Spaces:
Sleeping
A newer version of the Gradio SDK is available:
5.49.1
title: GAN Interactive Demo - MNIST
emoji: 🎨
colorFrom: purple
colorTo: pink
sdk: gradio
sdk_version: 4.44.0
app_file: app.py
pinned: false
license: mit
🎨 GAN Interactive Demo - Exploración del Espacio Latente
Una aplicación interactiva para explorar cómo funcionan las Redes Generativas Adversarias (GANs) entrenadas en el dataset MNIST de dígitos manuscritos.
🌟 Características
1. Generación Aleatoria
Genera dígitos manuscritos desde vectores de ruido aleatorio con un solo clic.
2. Control Manual
Ajusta las primeras 10 dimensiones del vector latente (de 100 dimensiones totales) usando sliders interactivos para ver cómo cada dimensión afecta la generación.
3. Interpolación
Observa el morphing suave entre dos dígitos diferentes. Esto demuestra que el espacio latente aprendido por la GAN es continuo y significativo.
4. Visualización del Espacio Latente
Inspirado en el TensorFlow Projector, esta sección te permite:
- Visualizar el espacio latente de 100 dimensiones reducido a 3D usando PCA
- Explorar agrupaciones usando t-SNE en 2D
- Generar dígitos desde puntos específicos del espacio
5. Grid de Comparación
Genera múltiples dígitos simultáneamente para observar la diversidad y calidad de las generaciones.
🏗️ Arquitectura
Generador
Input: Vector latente (100D) ~ N(0,1)
↓
Dense (7×7×256) + BatchNorm + LeakyReLU
↓
Reshape (7, 7, 256)
↓
Conv2DTranspose (7×7×128) + BatchNorm + LeakyReLU
↓
Conv2DTranspose (14×14×64) + BatchNorm + LeakyReLU
↓
Conv2DTranspose (28×28×1) + Tanh
↓
Output: Imagen (28×28×1) en rango [-1, 1]
Discriminador
Input: Imagen (28×28×1)
↓
Conv2D (14×14×64) + LeakyReLU + Dropout(0.3)
↓
Conv2D (7×7×128) + LeakyReLU + Dropout(0.3)
↓
Flatten + Dense(1)
↓
Output: Logit (clasificación binaria: real/falso)
📊 Entrenamiento
- Dataset: MNIST (60,000 imágenes de entrenamiento)
- Épocas: 50
- Batch Size: 256
- Optimizer: Adam (learning rate = 1e-4)
- Loss: Binary Cross-Entropy
- Tiempo de entrenamiento: ~20 minutos en CPU
🎓 Propósito Educativo
Esta demo fue creada para una clase de Machine Learning para:
- Demostrar visualmente cómo las GANs aprenden distribuciones de datos
- Mostrar que el espacio latente es continuo y navegable
- Permitir experimentación interactiva con los conceptos
- Inspirar a los estudiantes para su proyecto final de GANs
🚀 Uso Local
# Clonar el repositorio
git clone https://huggingface.co/spaces/[username]/gan-interactive-demo
cd gan-interactive-demo
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar la aplicación
python app.py
📚 Referencias
- Paper Original de GANs: Generative Adversarial Networks (Goodfellow et al., 2014)
- DCGAN: Unsupervised Representation Learning with Deep Convolutional GANs (Radford et al., 2015)
- GAN Lab: Understanding Complex Deep Generative Models
📝 Licencia
MIT License - Siéntete libre de usar este código para propósitos educativos.
🤝 Contribuciones
¡Contribuciones, issues y sugerencias son bienvenidas!
Creado con ❤️ para la clase de Machine Learning