Project 2


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:

  • Generalize your network implementation to fully connected layers.
  • Implement the forward and backward pass for convolutional neural networks.
  • Implement the Faster R-CNN architecture for object detection.
  • Implement and understand the tradeoffs using network regularization techniques.
  • Understand the characteristics of neural network based object detection using the PROPS Detection Dataset.


  1. Download the project starter code
  2. 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.
  3. Open the *.ipynb and *.py files 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 *.ipynb and *.py file within your Drive. Instructions for each feature are included in the two_layer_net.ipynb and fully_connected_networks.ipynb files.

    • We suggest starting by implementing the required features as they appear in the two_layer_net.ipynb notebook, which can be thought of as part 1 of the project. Then work through the fully_connected_networks.ipynb notebook 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.
  4. 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 *.ipynb and *.py files then upload them to the Project 2 Autograder. You may submit to the Autograder for feedback up to 5 times per day.
  5. Download final implementation
    • After implementing all features, save your work and download the completed *.ipynb and *.py files.
    • The last cell of the two_stage_detector.ipynb notebook will generate a file. The zip file should include fully_connected_networks.ipynb,, convolutional_networks.ipynb,, two_stage_detector.ipynb,, one_minute_deepconvnet.pth, overfit_deepconvnet.pth, best_overfit_five_layer_net.pth, best_two_layer_net.pth, and for this assignment.
  6. 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.


This project is due on Thursday, February 22nd at 11:59pm EST. We suggest starting as soon as possible.


This project will be graded by the Autograder. The project is worth a total of 165 points. You may submit to the Autograder for feedback up to 3 times per day.