gan-interactive-dem / README.md
Manuela Larrea
Initial commit: GAN Interactive Demo
29099e4

A newer version of the Gradio SDK is available: 5.49.1

Upgrade
metadata
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

# 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

📝 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