Note
This model was implemented in numpy-nn-model repository; therefore, this repository is no longer supported.
This is a numpy implementation of the Denoising Diffusion Probabilistic Model (DDPM), that runs at CPU with numpy or GPU with cupy (but it's better to train it on a GPU if you don't want to wait indefinitely)
- MNIST - consists of 70,000 single channel images of digits
- CIFAR-10 - consists of 60,000 different colour images in 10 classes
- UTKFace - consists of 20,000 colour images of faces
- diffusion.py - initializes and trains the model
- simple_convnet.py - just simple convolutional model architecture
- unet.py - unet like model architecture
- activations.py - list of activation functions for the model
- losses.py - list of loss functions for the model. But used only MSE Loss
- optimizers.py - list of gradient optimizers for the model
- schedules.py - beta schedules for the DDPM
- layers - neural network layers like Dense, Conv2D, etc
At the moment, implemented DDPM and DDIM samplers. The results were obtained using the DDPM sampler