Stanford CS231n: Convolutional Neural Networks for Visual Recognition Instructor: Fei-Fei Li, Justin Johnson, Serena Yeung Completed: June 2026
Assignment 2 moves from linear classifiers to deep neural networks — fully-connected nets, convolutional networks, batch normalization, dropout, and recurrent networks for image captioning. Transitions from NumPy-only to PyTorch.
| Module | Technique | Key Concepts |
|---|---|---|
| FC Nets | Fully-Connected Networks | Layer normalization, Adam optimizer |
| BatchNorm | Batch Normalization | Forward/backward, training vs inference |
| Dropout | Dropout Regularization | Prevent overfitting, inverted dropout |
| CNNs | Convolutional Networks | Conv layers, pooling, spatial dimensions |
| PyTorch | PyTorch NN | nn.Module, optim, DataLoader |
| RNN Captioning | Image Captioning | RNNs, attention, COCO dataset |
- FC Net on CIFAR-10: ~55% accuracy (vanilla) → ~60% (with BatchNorm + Dropout)
- CNN on CIFAR-10: ~70% accuracy with 3-layer ConvNet
- RNN Captioning: Generates descriptive captions on COCO validation set
- Language: Python 3.8+
- From scratch (NumPy): FC layers, BatchNorm, Dropout, Conv, RNN
- Deep Learning: PyTorch (transition to framework)
- Dataset: CIFAR-10 (classification), COCO (captioning)
- Environment: Jupyter Notebooks
- Implemented Conv2d forward/backward from scratch in NumPy before switching to PyTorch
- Understood why BatchNorm uses different behavior at train vs test time
- Built an RNN from scratch for image captioning — the full forward/backward loop
- Transitioned from manual NumPy to PyTorch's
nn.Module, understanding exactly what the framework abstracts
pip install numpy torch torchvision matplotlib
jupyter notebook FullyConnectedNets.ipynbCS231n is Stanford's premier Computer Vision course. Assignment 2 covers the core deep learning architectures that power modern vision systems — from CNNs to attention.