Skip to content

PyTorch/Tensorflow solutions for Stanford's CS231n: "CNNs for Visual Recognition"

Notifications You must be signed in to change notification settings

v-iashin/CS231n

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS231n

CS231n: "Convolutional Neural Networks for Visual Recognition"

My solutions to the assignments to the state-of-the-art course CS231n "Convolutional Neural Networks for Visual Recognition". It was hard, but it is cool.

Framework

During the course, there was a choice between two frameworks: TensorFlow and PyTorch. I decided to follow the TensorFlow track. Therefore no solution is provided for PyTorch. However, it might occur someday in the future. Now, the solutions are provided for both frameworks.

Content of the Assignments (Spring 2017)

There were three assignments during the Spring 2017 version of the course. They all are completed.

  1. [Assignment #1]
  • understand the basic Image Classification pipeline and the data-driven approach (train/predict stages)
  • understand the train/val/test splits and the use of validation data for hyperparameter tuning.
  • develop proficiency in writing efficient vectorized code with numpy
  • implement and apply a k-Nearest Neighbor (kNN) classifier
  • implement and apply a Multiclass Support Vector Machine (SVM) classifier
  • implement and apply a Softmax classifier
  • implement and apply a Two layer neural network classifier
  • understand the differences and tradeoffs between these classifiers
  • get a basic understanding of performance improvements from using higher-level representations than raw pixels (e.g. color histograms, Histogram of Gradient (HOG) features)
  1. [Assignment #2]
  • understand Neural Networks and how they are arranged in layered architectures
  • understand and be able to implement (vectorized) backpropagation
  • implement various update rules used to optimize Neural Networks
  • implement batch normalization for training deep networks
  • implement dropout to regularize networks
  • effectively cross-validate and find the best hyperparameters for Neural Network architecture
  • understand the architecture of Convolutional Neural Networks and train gain experience with training these models on data
  1. [Assignment #3]
  • understand the architecture of recurrent neural networks (RNNs) and how they operate on sequences by sharing weights over time
  • understand and implement both Vanilla RNNs and Long-Short Term Memory (LSTM) RNNs
  • understand how to sample from an RNN language model at test-time
  • understand how to combine convolutional neural nets and recurrent nets to implement an image captioning system
  • understand how a trained convolutional network can be used to compute gradients with respect to the input image
  • implement and different applications of image gradients, including saliency maps, fooling images, class visualizations
  • understand and implement style transfer
  • understand how to train and implement a generative adversarial network (GAN) to produce images that look like a dataset