對本書的贊譽
前言
如何使用本書
資源與支持
主要符號表
第1章深度學習簡介1
1.1起源2
1.2發(fā)展4
1.3成功案例6
1.4特點7
小結(jié)8
練習8
第2章預備知識9
2.1獲取和運行本書的代碼9
2.1.1獲取代碼并安裝運行環(huán)境9
2.1.2更新代碼和運行環(huán)境11
2.1.3使用GPU版的MXNet11
小結(jié)12
練習12
2.2數(shù)據(jù)操作12
2.2.1創(chuàng)建NDArray12
2.2.2運算14
2.2.3廣播機制16
2.2.4索引17
2.2.5運算的內(nèi)存開銷17
2.2.6NDArray和NumPy相互變換18
小結(jié)19
練習19
2.3自動求梯度19
2.3.1簡單例子19
2.3.2訓練模式和預測模式20
2.3.3對Python控制流求梯度20
小結(jié)21
練習21
2.4查閱文檔21
2.4.1查找模塊里的所有函數(shù)和類21
2.4.2查找特定函數(shù)和類的使用22
2.4.3在MXNet網(wǎng)站上查閱23
小結(jié)24
練習24
第3章深度學習基礎25
3.1線性回歸25
3.1.1線性回歸的基本要素25
3.1.2線性回歸的表示方法28
小結(jié)30
練習30
3.2線性回歸的從零開始實現(xiàn)30
3.2.1生成數(shù)據(jù)集30
3.2.2讀取數(shù)據(jù)集32
3.2.3初始化模型參數(shù)32
3.2.4定義模型33
3.2.5定義損失函數(shù)33
3.2.6定義優(yōu)化算法33
3.2.7訓練模型33
小結(jié)34
練習34
3.3線性回歸的簡潔實現(xiàn)35
3.3.1生成數(shù)據(jù)集35
3.3.2讀取數(shù)據(jù)集35
3.3.3定義模型36
3.3.4初始化模型參數(shù)36
3.3.5定義損失函數(shù)37
3.3.6定義優(yōu)化算法37
3.3.7訓練模型37
小結(jié)38
練習38
3.4softmax回歸38
3.4.1分類問題38
3.4.2softmax回歸模型39
3.4.3單樣本分類的矢量計算表達式40
3.4.4小批量樣本分類的矢量計算表達式40
3.4.5交叉熵損失函數(shù)41
3.4.6模型預測及評價42
小結(jié)42
練習42
3.5圖像分類數(shù)據(jù)集(Fashion-MNIST)42
3.5.1獲取數(shù)據(jù)集42
3.5.2讀取小批量44
小結(jié)45
練習45
3.6softmax回歸的從零開始實現(xiàn)45
3.6.1讀取數(shù)據(jù)集45
3.6.2初始化模型參數(shù)45
3.6.3實現(xiàn)softmax運算46
3.6.4定義模型46
3.6.5定義損失函數(shù)47
3.6.6計算分類準確率47
3.6.7訓練模型48
3.6.8預測48
小結(jié)49
練習49
3.7softmax回歸的簡潔實現(xiàn)49
3.7.1讀取數(shù)據(jù)集49
3.7.2定義和初始化模型50
3.7.3softmax和交叉熵損失函數(shù)50
3.7.4定義優(yōu)化算法50
3.7.5訓練模型50
小結(jié)50
練習50
3.8多層感知機51
3.8.1隱藏層51
3.8.2激活函數(shù)52
3.8.3多層感知機55
小結(jié)55
練習55
3.9多層感知機的從零開始實現(xiàn)56
3.9.1讀取數(shù)據(jù)集56
3.9.2定義模型參數(shù)56
3.9.3定義激活函數(shù)56
3.9.4定義模型56
3.9.5定義損失函數(shù)57
3.9.6訓練模型57
小結(jié)57
練習57
3.10多層感知機的簡潔實現(xiàn)57
3.10.1定義模型58
3.10.2訓練模型58
小結(jié)58
練習58
3.11模型選擇、欠擬合和過擬合58
3.11.1訓練誤差和泛化誤差59
3.11.2模型選擇59
3.11.3欠擬合和過擬合60
3.11.4多項式函數(shù)擬合實驗61
小結(jié)65
練習65
3.12權重衰減65
3.12.1方法65
3.12.2高維線性回歸實驗66
3.12.3從零開始實現(xiàn)66
3.12.4簡潔實現(xiàn)68
小結(jié)70
練習70
3.13丟棄法70
3.13.1方法70
3.13.2從零開始實現(xiàn)71
3.13.3簡潔實現(xiàn)73
小結(jié)74
練習74
3.14正向傳播、反向傳播和計算圖74
3.14.1正向傳播74
3.14.2正向傳播的計算圖75
3.14.3反向傳播75
3.14.4訓練深度學習模型76
小結(jié)77
練習77
3.15數(shù)值穩(wěn)定性和模型初始化77
3.15.1衰減和爆炸77
3.15.2隨機初始化模型參數(shù)78
小結(jié)78
練習79
3.16實戰(zhàn)Kaggle比賽:房價預測79
3.16.1Kaggle比賽79
3.16.2讀取數(shù)據(jù)集80
3.16.3預處理數(shù)據(jù)集81
3.16.4訓練模型82
3.16.5k折交叉驗證82
3.16.6模型選擇83
3.16.7預測并在Kaggle提交結(jié)果84
小結(jié)85
練習85
第4章深度學習計算86
4.1模型構造86
4.1.1繼承Block類來構造模型86
4.1.2Sequential類繼承自Block類87
4.1.3構造復雜的模型88
小結(jié)89
練習90
4.2模型參數(shù)的訪問、初始化和共享90
4.2.1訪問模型參數(shù)90
4.2.2初始化模型參數(shù)92
4.2.3自定義初始化方法93
4.2.4共享模型參數(shù)94
小結(jié)94
練習94
4.3模型參數(shù)的延后初始化95
4.3.1延后初始化95
4.3.2避免延后初始化96
小結(jié)96
練習97
4.4自定義層97
4.4.1不含模型參數(shù)的自定義層97
4.4.2含模型參數(shù)的自定義層98
小結(jié)99
練習99
4.5讀取和存儲99
4.5.1讀寫NDArray99
4.5.2讀寫Gluon模型的參數(shù)100
小結(jié)101
練習101
4.6GPU計算101
4.6.1計算設備102
4.6.2NDArray的GPU計算102
4.6.3Gluon的GPU計算104
小結(jié)105
練習105
第5章卷積神經(jīng)網(wǎng)絡106
5.1二維卷積層106
5.1.1二維互相關運算106
5.1.2二維卷積層107
5.1.3圖像中物體邊緣檢測108
5.1.4通過數(shù)據(jù)學習核數(shù)組109
5.1.5互相關運算和卷積運算109
5.1.6特征圖和感受野110
小結(jié)110
練習110
5.2填充和步幅111
5.2.1填充111
5.2.2步幅112
小結(jié)113
練習113
5.3多輸入通道和多輸出通道114
5.3.1多輸入通道114
5.3.2多輸出通道115
5.3.31×1卷積層116
小結(jié)117
練習117
5.4池化層117
5.4.1二維最大池化層和平均池化層117
5.4.2填充和步幅119
5.4.3多通道120
小結(jié)120
練習121
5.5卷積神經(jīng)網(wǎng)絡(LeNet)121
5.5.1LeNet模型121
5.5.2訓練模型122
小結(jié)124
練習124
5.6深度卷積神經(jīng)網(wǎng)絡(AlexNet)124
5.6.1學習特征表示125
5.6.2AlexNet126
5.6.3讀取數(shù)據(jù)集127
5.6.4訓練模型128
小結(jié)128
練習129
5.7使用重復元素的網(wǎng)絡(VGG)129
5.7.1VGG塊129
5.7.2VGG網(wǎng)絡129
5.7.3訓練模型130
小結(jié)131
練習131
5.8網(wǎng)絡中的網(wǎng)絡(NiN)131
5.8.1NiN塊131
5.8.2NiN模型132
5.8.3訓練模型133
小結(jié)134
練習134
5.9含并行連結(jié)的網(wǎng)絡(GoogLeNet)134
5.9.1Inception塊134
5.9.2GoogLeNet模型135
5.9.3訓練模型137
小結(jié)137
練習137
5.10批量歸一化138
5.10.1批量歸一化層138
5.10.2從零開始實現(xiàn)139
5.10.3使用批量歸一化層的LeNet140
5.10.4簡潔實現(xiàn)141
小結(jié)142
練習142
5.11殘差網(wǎng)絡(ResNet)143
5.11.1殘差塊143
5.11.2ResNet模型145
5.11.3訓練模型146
小結(jié)146
練習146
5.12稠密連接網(wǎng)絡(DenseNet)147
5.12.1稠密塊147
5.12.2過渡層148
5.12.3DenseNet模型148
5.12.4訓練模型149
小結(jié)149
練習149
第6章循環(huán)神經(jīng)網(wǎng)絡150
6.1語言模型150
6.1.1語言模型的計算151
6.1.2n元語法151
小結(jié)152
練習152
6.2循環(huán)神經(jīng)網(wǎng)絡152
6.2.1不含隱藏狀態(tài)的神經(jīng)網(wǎng)絡152
6.2.2含隱藏狀態(tài)的循環(huán)神經(jīng)網(wǎng)絡152
6.2.3應用:基于字符級循環(huán)神經(jīng)網(wǎng)絡的語言模型154
小結(jié)155
練習155
6.3語言模型數(shù)據(jù)集(歌詞)155
6.3.1讀取數(shù)據(jù)集155
6.3.2建立字符索引156
6.3.3時序數(shù)據(jù)的采樣156
小結(jié)158
練習159
6.4循環(huán)神經(jīng)網(wǎng)絡的從零開始實現(xiàn)159
6.4.1one-hot向量159
6.4.2初始化模型參數(shù)160
6.4.3定義模型160
6.4.4定義預測函數(shù)161
6.4.5裁剪梯度161
6.4.6困惑度162
6.4.7定義模型訓練函數(shù)162
6.4.8訓練模型并創(chuàng)作歌詞163
小結(jié)164
練習164
6.5循環(huán)神經(jīng)網(wǎng)絡的簡潔實現(xiàn)165
6.5.1定義模型165
6.5.2訓練模型166
小結(jié)168
練習168
6.6通過時間反向傳播168
6.6.1定義模型168
6.6.2模型計算圖169
6.6.3方法169
小結(jié)170
練習170
6.7門控循環(huán)單元(GRU)170
6.7.1門控循環(huán)單元171
6.7.2讀取數(shù)據(jù)集173
6.7.3從零開始實現(xiàn)173
6.7.4簡潔實現(xiàn)175
小結(jié)176
練習176
6.8長短期記憶(LSTM)176
6.8.1長短期記憶176
6.8.2讀取數(shù)據(jù)集179
6.8.3從零開始實現(xiàn)179
6.8.4簡潔實現(xiàn)181
小結(jié)181
練習182
6.9深度循環(huán)神經(jīng)網(wǎng)絡182
小結(jié)183
練習183
6.10雙向循環(huán)神經(jīng)網(wǎng)絡183
小結(jié)184
練習184
第7章優(yōu)化算法185
7.1優(yōu)化與深度學習185
7.1.1優(yōu)化與深度學習的關系185
7.1.2優(yōu)化在深度學習中的挑戰(zhàn)186
小結(jié)188
練習189
7.2梯度下降和隨機梯度下降189
7.2.1一維梯度下降189
7.2.2學習率190
7.2.3多維梯度下降191
7.2.4隨機梯度下降193
小結(jié)194
練習194
7.3小批量隨機梯度下降194
7.3.1讀取數(shù)據(jù)集195
7.3.2從零開始實現(xiàn)196
7.3.3簡潔實現(xiàn)198
小結(jié)199
練習199
7.4動量法200
7.4.1梯度下降的問題200
7.4.2動量法201
·6·目錄
7.4.3從零開始實現(xiàn)203
7.4.4簡潔實現(xiàn)205
小結(jié)205
練習205
7.5AdaGrad算法206
7.5.1算法206
7.5.2特點206
7.5.3從零開始實現(xiàn)208
7.5.4簡潔實現(xiàn)209
小結(jié)209
練習209
7.6RMSProp算法209
7.6.1算法210
7.6.2從零開始實現(xiàn)211
7.6.3簡潔實現(xiàn)212
小結(jié)212
練習212
7.7AdaDelta算法212
7.7.1算法212
7.7.2從零開始實現(xiàn)213
7.7.3簡潔實現(xiàn)214
小結(jié)214
練習214
7.8Adam算法215
7.8.1算法215
7.8.2從零開始實現(xiàn)216
7.8.3簡潔實現(xiàn)216
小結(jié)217
練習217
第8章計算性能218
8.1命令式和符號式混合編程218
8.1.1混合式編程取兩者之長220
8.1.2使用HybridSequential類構造模型220
8.1.3使用HybridBlock類構造模型222
小結(jié)224
練習224
8.2異步計算224
8.2.1MXNet中的異步計算224
8.2.2用同步函數(shù)讓前端等待計算結(jié)果226
8.2.3使用異步計算提升計算性能226
8.2.4異步計算對內(nèi)存的影響227
小結(jié)229
練習229
8.3自動并行計算229
8.3.1CPU和GPU的并行計算230
8.3.2計算和通信的并行計算231
小結(jié)231
練習231
8.4多GPU計算232
8.4.1數(shù)據(jù)并行232
8.4.2定義模型233
8.4.3多GPU之間同步數(shù)據(jù)234
8.4.4單個小批量上的多GPU訓練236
8.4.5定義訓練函數(shù)236
8.4.6多GPU訓練實驗237
小結(jié)237
練習237
8.5多GPU計算的簡潔實現(xiàn)237
8.5.1多GPU上初始化模型參數(shù)238
8.5.2多GPU訓練模型239
小結(jié)241
練習241
第9章計算機視覺242
9.1圖像增廣242
小結(jié)250
練習250
9.2微調(diào)250
熱狗識別251
小結(jié)255
練習255
9.3目標檢測和邊界框255
邊界框256
小結(jié)257
練習257
9.4錨框257
小結(jié)265
練習265
9.5多尺度目標檢測265
小結(jié)268
練習268
9.6目標檢測數(shù)據(jù)集(皮卡丘)268
小結(jié)270
練習271
9.7單發(fā)多框檢測(SSD)271
小結(jié)278
練習278
9.8區(qū)域卷積神經(jīng)網(wǎng)絡(R-CNN)系列280
小結(jié)285
練習285
9.9語義分割和數(shù)據(jù)集285
小結(jié)290
練習290
9.10全卷積網(wǎng)絡(FCN)290
小結(jié)297
練習297
9.11樣式遷移298
小結(jié)306
練習306
9.12實戰(zhàn)Kaggle比賽:圖像分類(CIFAR-10)306
提交結(jié)果313
小結(jié)313
練習313
9.13實戰(zhàn)Kaggle比賽:狗的品種識別(ImageNetDogs)314
小結(jié)320
練習320
第10章自然語言處理321
10.1詞嵌入(word2vec)321
小結(jié)325
練習325
10.2近似訓練325
小結(jié)327
練習328
10.3word2vec的實現(xiàn)328
小結(jié)336
練習336
10.4子詞嵌入(fastText)336
小結(jié)337
練習337
10.5全局向量的詞嵌入(GloVe)337
小結(jié)340
練習340
10.6求近義詞和類比詞340
小結(jié)343
練習343
10.7文本情感分類:使用循環(huán)神經(jīng)網(wǎng)絡343
小結(jié)347
練習347
10.8文本情感分類:使用卷積神經(jīng)網(wǎng)絡(textCNN)347
小結(jié)353
練習353
10.9編碼器-解碼器(seq2seq)353
小結(jié)355
練習355
10.10束搜索355
小結(jié)358
練習358
10.11注意力機制358
小結(jié)361
練習361
10.12機器翻譯361
小結(jié)369
練習369
附錄A數(shù)學基礎370
附錄B使用Jupyter記事本376
附錄C使用AWS運行代碼381
附錄DGPU購買指南388
附錄E如何為本書做貢獻391
附錄Fd2lzh包索引395
附錄G中英文術語對照表397
參考文獻402
索引407