gan-interactive-dem / README.md
Manuela Larrea
Initial commit: GAN Interactive Demo
29099e4
---
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**