Diffusion models have connections to multiple types of generative models. The previous resources talk about the score-based model connection, this one connects diffusion models to VAEs.
As part of his amazing "Introduction to deep generative modeling" blog series, Dr. Jakub Tomczak provides a great intro and code examples of diffusion models.
After going through the introductory resources shared here, reading the original papers will be quite informative too!
The DDPM paper was the breakout diffusion model paper.
I have tried to include a diversity of resources that provide different perspectives on diffusion models. Hopefully it provides you different ways about thinking and learning about the topic!
If you like this thread, please share! 🙏
I am also working on my own blog post about diffusion models 👀
Awesome and surprising things you can do with Jupyter Notebooks ⬇
1. Write a full-fledged Python library!
You can write all of your code, documentation, & tests with Jupyter Notebooks & nbdev.fast.ai, all while maintaining best software practices and implementing CI/CD!
fastai deep learning library is entirely written in notebooks!
2. Create a blog!
Platforms like fastpages.fast.ai easily allow you to create blog posts from your Jupyter Notebooks, with the code cells and outputs in your post, and can even be made interactive.
The model is based on an autoregressive transformer (like DALL·E) combined with a VQGAN but utilizes several key tricks to improve the quality and also controllability of the generations. 2/10
One trick is the use of a segmentation map (referred to as a scene) and a VQGAN for the scene.
As you can see here, this provides more controllability to the generation process. 3/10
The first step is to explore the data, also known as EDA. Getting a feel for the data is important to be able to derive important insights that can help you. 👨💻
After exploring the data, the next step is to make a baseline solution. In this case, I had put together a quick pretrained baseline based on @Nils_Reimers's SentenceTransformers:
What matters most when training a neural network is how well it generalizes to unseen data.
For neural networks, it turns out there's a simple principle that can allow you to understand model generalization. (1/18)
A thread ↓
First let's formalize what generalization means.
We can say that the generalization gap is the difference between the loss for the training data and the loss for the unseen data taken from the same distribution. (2/18)
The loss itself depends on the parameters of the model, and we adjust the parameters to decrease the loss through gradient descent and reach a (local) minimum. (3/18)
In order to select the 3 winners, I needed to keep track of the entrants. I used the Twitter API to do so. I signed up for the Twitter API and followed the required steps: developer.twitter.com/en/portal/peti…
Take a look at some of these results from the paper!
Read on to see how you can try it out for yourself!⬇
GLIDE is based on diffusion models, which is a new class of generative models developed in the last couple years and often achieving state-of-the-art results. 2/9
The model is trained on the same dataset as the DALL-E model. In addition to the 3.5B-param model, an upscaling diffusion model is trained to go from 64x64 images to 256x256 images. The training compute is similar to that used to train DALL-E. 3/9