These notes accompany the original Stanford CS class CS231n: Convolutional Neural Networks for Visual Recognition. Many thanks to Fei-Fei Li and Andrej Karpathy for letting us use their course materials!

Additional supplementary notes provided by Erik Learned-Miller and Hang Su from the class COMPSCI 697L: Deep Learning. Thanks Erik and Hang!

Setup

Follow the preparation tutorials for Virtualenv to get setup on your home machine. Follow the AWS tutorial to get started with a student user account on Tufts' AWS GPU instances.

If you are unfamiliar with scientific computing in Python or have never used Jupyter notebooks, please follow those tutorials to get ready for this class. All homeworks are in Python and use Jupyter notebooks for problem set exercises.

Module 0: Preparation

Python Virtualenv Tutorial

Tufts AWS Tutorial

Python / Numpy Tutorial

Jupyter Notebook Tutorial

Module 0.5: Vector Calculus

Vector, Matrix, and Tensor Derivatives

Module 1: Neural Networks

Image Classification: Data-driven Approach, k-Nearest Neighbor, train/val/test splits

L1/L2 distances, hyperparameter search, cross-validation

Linear classification: Support Vector Machine, Softmax

parameteric approach, bias trick, hinge loss, cross-entropy loss, L2 regularization, web demo

Optimization: Stochastic Gradient Descent

optimization landscapes, local search, learning rate, analytic/numerical gradient

Backpropagation, Intuitions

chain rule interpretation, real-valued circuits, patterns in gradient flow

Neural Networks Part 1: Setting up the Architecture

model of a biological neuron, activation functions, neural net architecture, representational power

Neural Networks Part 2: Setting up the Data and the Loss

preprocessing, weight initialization, batch normalization, regularization (L2/dropout), loss functions

Neural Networks Part 3: Learning and Evaluation

gradient checks, sanity checks, babysitting the learning process, momentum (+nesterov), second-order methods, Adagrad/RMSprop, hyperparameter optimization, model ensembles

Putting it together: Minimal Neural Network Case Study

minimal 2D toy data example

Module 2: Convolutional Neural Networks

Convolutional Neural Networks: Architectures, Convolution / Pooling Layers

layers, spatial arrangement, layer patterns, layer sizing patterns, AlexNet/ZFNet/VGGNet case studies, computational considerations

Understanding and Visualizing Convolutional Neural Networks

tSNE embeddings, deconvnets, data gradients, fooling ConvNets, human comparisons

Transfer Learning and Fine-tuning Convolutional Neural Networks