
CONTENTS
4 A Convolutional Neural Network from Scratch 49
4.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Convolutional Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 Data and Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.2 Forward pass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.3 Backwards Pass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2.4 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.2.5 Update parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3 Max Pooling Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.4 Flatten Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.5 Putting it all together again . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.6 Submission Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5 Transfer Learning and Computer Vision in PyTorch 59
5.1 PyTorch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.2 Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 CIFAR100 Example in PyTorch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Transfer Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.3.1 Datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3.2 Base Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3.3 Pre-processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3.4 Feature Extractor + SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3.5 Fine-tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6 Natural Language Processing with Recurrent Neural Networks in Tensorflow 70
6.1 Tensorflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.2 CIFAR100 in Tensorflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.3 RNN Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.3.1 RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.3.2 LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.3.3 GRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.4 RNNs for sentence classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.4.1 Datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.4.2 Network Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
ii