--- 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: 1. Demostrar visualmente cómo las GANs aprenden distribuciones de datos 2. Mostrar que el espacio latente es continuo y navegable 3. Permitir experimentación interactiva con los conceptos 4. Inspirar a los estudiantes para su proyecto final de GANs ## 🚀 Uso Local ```bash # 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](https://arxiv.org/abs/1406.2661) (Goodfellow et al., 2014) - **DCGAN**: [Unsupervised Representation Learning with Deep Convolutional GANs](https://arxiv.org/abs/1511.06434) (Radford et al., 2015) - **GAN Lab**: [Understanding Complex Deep Generative Models](https://poloclub.github.io/ganlab/) ## 📝 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**