Sunteți pe pagina 1din 635

Dive into Deep Learning

A. Zhang, Z. C. Lipton, M. Li, and A. J. Smola

Jan 13, 2019

This draft is a testing version (draft date: January 13, 2019). Visit https://d2l.ai to obtain a later or release version.

Contents

Preface

1

0.1 One Medium Combining Code, Math, and HTML

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

0.2 Organization

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

0.3 Learning by Doing

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

0.4 Acknowledgments

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

1 Introduction

5

1.1 Introduction to Deep Learning

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

5

1.2 Using this Book .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

2 A Taste of Deep Learning

 

21

2.1 Introduction

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

2.2 Getting started with Gluon

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

2.3 Manipulating Data with ndarray

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

2.4 Linear algebra

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

2.5 Automatic Differentiation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

2.6 Probability and statistics

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

69

2.7 Naive Bayes Classification

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

77

2.8 Sampling

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

82

2.9 Documentation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

89

3 Deep Learning Basics

 

93

3.1 Linear Regression

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

93

3.2 Linear regression implementation from scratch

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

103

3.3 Gluon Implementation of Linear Regression

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

3.4 Softmax Regression

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

114

3.5 Image Classification Data (Fashion-MNIST)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

121

3.6 Softmax Regression from Scratch

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

124

3.7 Softmax Regression in Gluon

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

129

3.8 Multilayer Perceptron

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

132

3.9 Implementing a Multilayer Perceptron from Scratch

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

140

3.10 Multilayer Perceptron in Gluon

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

143

3.11 Model Selection, Underfitting and Overfitting

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

144

3.12 Weight Decay

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

155

3.13 Dropout

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

162

3.14 Forward Propagation, Back Propagation and Computational Graphs

.

.

.

.

.

.

.

168

3.15 Numerical Stability and Initialization

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

172

3.16 Environment

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

177

3.17 Predicting House Prices on Kaggle

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

185

4 Deep Learning Computation

 

195

4.1 Layers and Blocks

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

195

4.2 Parameter Management

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

202

4.3 Deferred Initialization

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

210

4.4 Custom Layers

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

214

4.5 File I/O

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

217

4.6 GPUs

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

219

5 Convolutional Neural Networks

 

227

5.1 From Dense Layers to Convolutions .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

228

5.2 Convolutions for Images

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

232

5.3 Padding and Stride

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

238

5.4 Multiple Input and Output Channels

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

242

5.5 Pooling

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

247

5.6 Convolutional Neural Networks (LeNet)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

251

5.7 Deep Convolutional Neural Networks (AlexNet)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

257

5.8 Networks Using Blocks (VGG)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

266

5.9 Network in Network (NiN)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

270

5.10 Networks with Parallel Concatenations (GoogLeNet)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

275

5.11 Batch Normalization

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

280

5.12 Residual Networks (ResNet)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

288

5.13 Densely Connected Networks (DenseNet)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

296

6 Recurrent Neural Networks

 

303

6.1 Sequence Models

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

304

6.2 Language Models

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

313

6.3 Recurrent Neural Networks

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

319

6.4 Text Preprocessing

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

324

6.5 Building a Recurrent Neural Network from Scratch

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

329

6.6 Gluon Implementation in Recurrent Neural Networks .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

339

6.7 Back-propagation Through Time

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

342

6.8 Gated Recurrent Unit (GRU)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

346

6.9 Long Short-term Memory (LSTM)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

353

6.10 Deep Recurrent Neural Networks

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

360

6.11 Bidirectional Recurrent Neural Networks

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

362

7 Optimization Algorithms

 

365

7.1 Optimization and Deep Learning

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

365

7.2 Gradient Descent and Stochastic Gradient Descent

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

370

7.3 Mini-Batch Stochastic Gradient Descent

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

377

7.4 Momentum .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.