Project 1
Overview
The objective of this project is to gain experience building a machine learning pipeline that can be used to train and evaluate image classification models. In this project you will implement a set of classification models then apply them to a dataset of images in the context of domestic service robots.
The goals for this project are as follows:
- Implement a K-Nearest Neighbors classifier.
- Implement a Multiclass Support Vector Machine classifier.
- Implement a Softmax classifier.
- Implement the forward and backward pass for a two layer neural network.
- Understand the differences and tradeoffs between each of these classifiers.
- Understand the characteristics of instance-level classification using the PROPS Classification Dataset.
- Practice with cross validating your machine learning models.
Instructions
- Download the project starter code
- Unzip the starter code and upload to Google Drive
- Once unzipped, you should find a root directory titled ‘P1’. The ‘P1’ directory contains all starter code and files needed to complete this project. Please upload the ‘P1’ directory to your Google Drive.
- Open the
*.ipynb
and*.py
files and implement featuresWe 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 theknn.ipynb
andlinear_classifier.ipynb
files.We suggest starting by implementing the required features as they appear in the
knn.ipynb
notebook, which can be thought of as part 1 of the project. Then work through thelinear_classifier.ipynb
notebook as part 2 of the project. Then work through thetwo_layer_net.ipynb
notebook as the final part 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
*.ipynb
and*.py
files then upload them to the Project 1 Autograder. You may submit to the Autograder for feedback up to 2 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
*.ipynb
and*.py
files. - The last cell of the
linear_classifier.ipynb
notebook will generate auniqueid_umid_P1.zip
file. The zip file should includeknn.ipynb
,knn.py
,linear_classifier.ipynb
,linear_classifier.py
,svm_best_model.pt
,softmax_best_model.pt
,two_layer_net.ipynb
,two_layer_net.py
, andnn_best_model.pt
for 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 Thursday, February 1st at 11:59pm EST. We suggest starting as soon as possible.
Grading
This project will be graded by the Autograder. The project is worth a total of 130 points. You may submit to the Autograder for feedback up to 3 times per day.