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