Skip to main content
This assignment is before 11:59PM due on Tuesday, February 19, 2019.

Training a classifier : Assignment 4

Deep learning is transforming the world, and the point of this assignment is to demonstrate that you can do deep learning!

The community is making deep learning easier to use and getting more people from all backgrounds involved through free online classes like “Practical Deep Learning for Coders 2019”, which was launched at the end of January and covers cutting-edge results in an introductory class.

For example, after following along with the first lesson for this assignment, you’ll have trained an image classifier that can recognize 12 cat breeds and 25 dog breeds at a state-of-the-art accuracy of around 94%, compared to 59% in 2012!

And next week, we will explore shortcomings with current image classification approaches and how crowdsourcing can help.


Detailed Instructions

  1. Read the Getting Started section, which describes the need to access a NVIDIA GPU (Graphics Processing Unit). Thankfully, Google Colab freely provides the use of a NVIDIA K80 GPU for up to 12 hours at a time!
  2. Follow the Colab Setup, opening the notebook called “nbs/dl1/lesson1-pets.ipynb”. Make sure to change your runtime type to GPU and save a copy of the notebook in your Google Drive, as instructed!
  3. Watch Lesson 1 on image classification, following along in your copy of the notebook - it’s fun, and you’ll learn more by runnning code!
  4. Answer the following Homework 4 questions on Gradescope, where a link to your Colab notebook with all the outputs shown is required.


Below are the questions that you will be asked to answer about this assignment. Please turn in your answers for Homework 4 on Gradescope.

It is a good idea to write your answers in a file on you own computer, instead of typing them directly into Gradescope, so that you’ll have a copy after you press the submit button.

  1. What is the link to your Colab notebook?
  2. What are two places that you often get data from, and why are they each important?
  3. What is “fine-grained classification”, and why is it difficult?
  4. What are “labels”, and how do you get them in this dataset?
  5. Why shouldn’t images in a dataset have different shapes and sizes?
  6. What does it mean to “normalize” images?
  7. What is “transfer learning”, and why is it helpful?
  8. What is “overfitting”, and how do you try to avoid it?
  9. Describe two ways to interpret your model’s performance.
  10. Describe the connection between “unfreezing”, “fine-tuning”, and “learning rates”.