Assignment 1: Why Generative Models

Discussion: April 27th

In this assignment, we will be looking at why we might need generative models by considering how other models fail at modeling data distributions properly. Use this as an opportunity to set up training/experimentation workflows that you can reuse in later assignments.

General Assignment Notes

You may work on the assignments in groups (up to three people). They will generally consist of writing code, usually to implement some kind of generative model and to apply it/play around with it a little bit. If something is unclear, ask. Tasks are often deliberately open-ended in order to encourage exploration. Don’t concern yourself with achieving X% of points. These assignments are for you to gain practical experience and to get into the habit of asking (and answering) interesting questions.

Unfortunately, we currently cannot supply GPU servers for the class as we did last year. You will have to work on your own machine or with Google Colab. If you need a refresher, see the general notes of last semester’s IDL class here. Note that TF 2.x is now the default in Colab, so you don’t have to specify it anymore. Also, you might want to install the tensorflow-probability library – it might come in handy.

For each assignment, ideally your final results are in a Jupyter notebook so that we can have a look at them in class. Use images/plots liberally. Also, feel free to use markdown cells to write text to explain or discuss your code/results. You can send your notebook via email to Jens and/or bring them to class on your laptop.

Revisiting Autoencoders

Since autoencoders consist of an encoder and a decoder, they could in principle be used to generate data through use of the decoder on its own. Try this:

Are you happy with the outputs? You most likely aren’t. Offer some hypotheses as to why this might be. Think about and propose (and, if you want to, implement) ways to produce better codes/images.

Ideas for Further Exploration