Project 2
Overview
The objective of this project is to gain experience building and training neural networks as multi layer perceptrons. In this project you will implement a fixed size two layer neural network and a set of generic network layers that can be used to build and train multi layer perceptrons.
The goals for this project are as follows:
- Implement the forward and backward pass for a two layer neural network.
- Generalize your network implementation to fully connected layers.
- Implement the forward and backward pass for a non-linear activation function (ReLU).
- Implement and understand the tradeoffs using network regularization techniques.
- Understand the characteristics of neural network based classification using the PROPS dataset.
Instructions
- Download the project starter code
- Unzip the starter code and upload to Google Drive- Once unzipped, you should find a root directory titled ‘P2’. The ‘P2’ directory contains all starter code and files needed to complete this project. Please upload the ‘P2’ directory to your Google Drive.
 
- Open the *.ipynband*.pyfiles and implement features- We recommend implementing the features in a Google Colab environment. The Colab development environment can be accessed by double-clicking on each - *.ipynband- *.pyfile within your Drive. Instructions for each feature are included in the- two_layer_net.ipynband- fully_connected_networks.ipynbfiles.
- We suggest starting by implementing the required features as they appear in the - two_layer_net.ipynbnotebook, which can be thought of as part 1 of the project. Then work through the- fully_connected_networks.ipynbnotebook as part 2 of the project.
- While working on the project, keep the following in mind: - The notebook and the python file have clearly marked blocks where you are expected to write code. Do not write or modify any code outside of these blocks.
- Do not add or delete cells from the notebook. You may add new cells to perform scratch computations, but you should delete them before submitting your work.
- Run all cells, and do not clear out the outputs, before submitting. You will only get credit for code that has been run.
- To avoid experiencing Colab usage limits, save and close your notebooks once finished working.
 
 
- Submit your implementation for Autograder feedback- Once you have implemented a portion of the required features, you may submit your work for feedback from the Autograder. To receive feedback, download your *.ipynband*.pyfiles then upload them to the Project 2 Autograder. You may submit to the Autograder for feedback up to 5 times per day.
 
- Once you have implemented a portion of the required features, you may submit your work for feedback from the Autograder. To receive feedback, download your 
- Download final implementation- After implementing all features, save your work and download the completed *.ipynband*.pyfiles.
- The last cell of the fully_connected_networks.ipynbnotebook will generate auniqueid_umid_P2.zipfile. The zip file should includetwo_layer_net.ipynb,two_layer_net.py,fully_connected_networks.ipynb,fully_connected_networks.py,nn_best_model.pt,best_overfit_five_layer_net.pth, andbest_two_layer_net.pthfor this assignment.
 
- After implementing all features, save your work and download the completed 
- Submit your python and notebook files for grading- Upload your files to the Autograder for grading consideration. Your highest score will be used for final grades.
 
Deadline
This project is due on Monday, October 14th at 11:59pm CT. We suggest starting as soon as possible.
Grading
This project will be graded by the Autograder. The project is worth a total of 110 points. You may submit to the Autograder for feedback up to 5 times per day.