Due at 11:59 pm on Friday, March 22nd. Please submit to Gradescope. Please follow the general guidelines regarding homework assignments.

It is recommended to use the GPU capabilities of Collaboratory for this homework. Ensure that the GPU is enabled by clicking on Runtime -> Change runtime type -> Hardware accelerator and making sure GPU is selected. GPU availability can be limited in the evenings, so start your homework on time and consider working in the mornings. You might also try the Princeton CS cluster.

  1. Train a denoising autoencoder. You don’t have to submit anything for this part. Use the notebook DenoisingAutoencoder-Training.ipynb. Add your own UNet code from last time. Training will be improved if you add InstanceNorm2d to the ConvBlock class. Or you can use the provided InstanceNorm2dPlus, which is a variant of the standard InstanceNorm2d. The end of the notebook saves the trained net to Google Drive.

  2. Use the notebook DenoisingAutoencoder-Generation.ipynb. This reads in the previously saved net. Verify that your trained net is able to denoise MNIST test images. Try changing the diffusion/Langevin dynamics by zeroing out the noise that is added at each step. Submit example images from the correct generation process, and also from the zero-noise generation process.