CNN Assignment - Milestone 2

Overview

The purpose of this assignment is to learn about the inner workings of CNNs. You are asked to implement a pioneering CNN, LeNet5, which is a CNN for MNIST digit recognition.

Assignment

This assignment is worth 125 points. Please work on it by yourself. Please do not use GenAI tools to develop and test the code.
  1. For this milestone, you will implement and test the backpropagtion pass.
  2. Please create a document that is the lab manual. Please add your name to the top of it.
  3. Continue working with the "LeNet5.java" file and place all the MNIST testing into a "MNISTCNN.java" You should be able to copy it from the FFNet MNIST problem.
  4. For milestone 1, I asked you to have bias weights for the pooling layer. It turns out they do not affect the performance of the network. Please remove them.
  5. The network gets good training performance if the weights are initialize to the range [-0.1..0.1[, i.e. through Math.random() * 0.2 - 0.1;
  6. For your reference, you should have the following trainable parameters:
  7. The learning rate should be 0.01
  8. Implement the backprop functionality by determining the gradients as well as update the weights. Use the information from the slides to implement this pass.
  9. Here is an annotated sheet giving you a sense of the flow of gradients.
  10. Testing:
  11. Submission: Please submit a zipped copy of your lab manual and the .java code for this assignment.