MNIST Diffusion Model
A diffusion-based generative model for MNIST digits implemented in PyTorch.
Installation
pip install -r requirements.txt
Usage
Train Diffusion Model
python main.py train --epochs 10 --lr 2e-4 --batch-size 64
Train with Self-Attention
python main.py train --epochs 10 --attention
Train Autoencoder (for latent diffusion)
python main.py train-ae --epochs 10
Generate Samples
python main.py sample --checkpoint checkpoints/diffusion_latest.pt
Visualize Diffusion Process
python main.py visualize --all
Configuration
All hyperparameters can be found in src/config.py:
- DIFFU_STEPS: Number of diffusion steps (default: 1000)
- EPOCHS: Training epochs (default: 10)
- BATCH_SIZE: Batch size (default: 64)
- LEARNING_RATE: Learning rate (default: 2e-4)
Model Architecture
The diffusion model uses a UNet architecture with: - Timestep embedding - Label conditioning (for class-conditional generation) - Optional self-attention layers
License
See LICENSE for details.
