$30
In this assignment, you will build and train a Hopfield network to store images from the MNIST dataset. Hopfield networks are a specific type of PDP model designed for autoassociative learning. You can find out more about them in the lectures and readings for week 5 of the class.
The purpose of this assignment is three-fold:
1) To get you familiar with a classic neural network model that is very different from most of the models we get exposed to in machine learning nowadays, so that you don’t fall prey to the idea that neural networks are all deep convolutional networks.
2) To force you to think about the actual learning algorithm for a neural network and how to implement that in code in an elegant manner.
3) To have you engage in some more in depth thought about auto-associative learning and the relationship between auto-associative learning and brains.
To be clear, Hopfield networks can sometimes be wonky to train. Remember that Raymond and I are here to help you. Use office hours if you’re getting stuck! But, also note that your marks not only depend on the code, but also on the style of your code and your answer to some questions (given below). So, even if your network doesn’t work perfectly you can still get a decent mark.
Submit your assignment on myCourses. You must submit both your code (i.e. the modified Jupyter notebook) and also a pdf document with your answers to the questions below. You will be marked on both your code and the document, don’t skip either!!!!