本書以工程實踐為主線,基于TensorFlow 2.0軟件框架詳細介紹了深度學習的工作原理和方法,并以實際代碼為例,剖析了構(gòu)建神經(jīng)網(wǎng)絡模型的流程、全連接網(wǎng)絡的運行原理、卷積神經(jīng)網(wǎng)絡的結(jié)構(gòu)與運行機制、循環(huán)神經(jīng)網(wǎng)絡的結(jié)構(gòu)與運行機制,討論了使用Dense、Conv1D、Conv2D、SimpleRNN、LTSM、GRU、Bidirectional等深度學習模型解決計算機視覺、序列問題的方法,并在此基礎上基于具體示例介紹了深度學習的高階實踐。
香港理工大學軟件科技理學碩士,中國人工智能學會會員,香港理工大學北京校友會理事。在計算機行業(yè)工作近30年,長期從事產(chǎn)品研發(fā)與項目管理工作,曾就職于北控、盛大等企業(yè),目前是一家知名人工智能企業(yè)的合伙人,負責創(chuàng)新性產(chǎn)品的規(guī)劃與研發(fā),致力于深度學習領(lǐng)域的探索與產(chǎn)品化實踐。
第1章 搭建環(huán)境
1.1 安裝Anaconda 2
1.2 安裝CUDA及其加速器 3
1.3 安裝TensorFlow 2.0 4
1.4 開發(fā)環(huán)境——Spyder 6
1.5 可視化分析工具——TensorBoard 7
第2章 機器學習與深度學習
2.1 機器學習 11
2.2 深度學習 13
第3章 構(gòu)建神經(jīng)網(wǎng)絡模型
3.1 搭建一個全連接網(wǎng)絡 17
3.2 確定要解決的問題 19
3.3 準備數(shù)據(jù)與數(shù)據(jù)預處理 20
3.3.1 數(shù)據(jù)集 22
3.3.2 擬合問題初探 23
3.3.3 數(shù)據(jù)集劃分與數(shù)據(jù)污染 25
3.3.4 神經(jīng)網(wǎng)絡中的數(shù)據(jù)表示 26
3.3.5 張量操作 30
3.3.6 數(shù)據(jù)預處理 32
3.4 構(gòu)建神經(jīng)網(wǎng)絡 34
3.4.1 構(gòu)建神經(jīng)網(wǎng)絡的方法 34
3.4.2 理解Sequential Model的構(gòu)建方法 35
3.4.3 理解layers與layer 37
3.4.4 理解models與model 39
3.4.5 理解Dense 39
3.4.6 激活函數(shù) 40
3.5 編譯模型 42
3.5.1 優(yōu)化器 43
3.5.2 損失函數(shù) 44
3.5.3 評價指標 46
3.6 訓練模型 47
3.6.1 使用fit方法訓練模型 47
3.6.2 使用fit_generator方法訓練模型 51
3.6.3 使用TensorBoard回調(diào)函數(shù)訓練模型 52
3.7 測試模型 59
3.7.1 性能評估 59
3.7.2 模型預測 60
3.8 保存模型 62
3.8.1 save方式 62
3.8.2 save_weights方式 63
3.8.3 SavedModel方式 64
3.9 使用模型 64
3.9.1 以save_weights方式保存的模型的加載方法 64
3.9.2 以save方式保存的模型的加載方法 65
3.9.3 以SavedModel方式保存的模型的加載方法 66
3.10 模型的重新訓練與預測 66
3.11 使用模型在新數(shù)據(jù)上進行推理 69
第4章 全連接網(wǎng)絡
4.1 全連接層 72
4.2 使用全連接網(wǎng)絡解決文本分類問題 74
4.2.1 基于IMDB數(shù)據(jù)集的二分類任務 75
4.2.2 基于Reuters數(shù)據(jù)集的多分類任務 79
4.3 使用全連接網(wǎng)絡解決標量回歸問題 82
4.3.1 使用留出驗證集方式訓練模型 86
4.3.2 使用K折交叉驗證方式訓練模型 87
4.4 全連接網(wǎng)絡圖片分類問題的優(yōu)化 88
4.4.1 降低模型容量:縮減模型的超參數(shù) 90
4.4.2 奧卡姆剃刀原則:正則化模型參數(shù) 91
4.4.3 初識隨機失活:Dropout 92
第5章 卷積神經(jīng)網(wǎng)絡
5.1 使用CNN解決MNIST數(shù)據(jù)集的分類問題 96
5.2 全連接網(wǎng)絡面臨的問題 98
5.3 局部相關(guān)性與權(quán)值共享 100
5.4 構(gòu)建卷積神經(jīng)網(wǎng)絡 102
5.4.1 CNN與Dense性能比較 102
5.4.2 卷積層 104
5.4.3 池化層 108
5.4.4 打平層 111
5.4.5 卷積神經(jīng)網(wǎng)絡基礎架構(gòu) 113
5.5 使用Conv1D解決二分類問題 115
5.5.1 EarlyStopping函數(shù):訓練終止 118
5.5.2 ModelCheckpoint函數(shù):動態(tài)保存模型 120
5.5.3 再談隨機失活 122
第6章 循環(huán)神經(jīng)網(wǎng)絡
6.1 循環(huán)神經(jīng)網(wǎng)絡基礎 126
6.1.1 序列 126
6.1.2 序列向量化 126
6.1.3 權(quán)值共享 130
6.1.4 全局語義 130
6.1.5 循環(huán)神經(jīng)網(wǎng)絡概述 131
6.1.6 循環(huán)層 132
6.2 SimpleRNN 133
6.2.1 序列數(shù)據(jù)的預處理 136
6.2.2 理解SimpleRNN層 137
6.3 LSTM網(wǎng)絡 141
6.3.1 短時記憶與遺忘曲線 141
6.3.2 梯度問題 142
6.3.3 門控機制 143
6.3.4 理解LSTM層 144
6.4 GRU 151
6.4.1 LSTM網(wǎng)絡面臨的問題 151
6.4.2 門控機制的優(yōu)化方法 152
6.4.3 理解GRU層 152
6.5 雙向循環(huán)神經(jīng)網(wǎng)絡 159
6.5.1 雙向LSTM網(wǎng)絡 161
6.5.2 雙向GRU 164
6.6 解決循環(huán)神經(jīng)網(wǎng)絡的擬合問題 167
6.6.1 通過正則化模型參數(shù)解決擬合問題 167
6.6.2 使用隨機失活解決擬合問題 168
第7章 深度學習高階實踐
7.1 函數(shù)式API網(wǎng)絡模型 173
7.1.1 如何實現(xiàn)層圖共享 177
7.1.2 如何實現(xiàn)模型共享 180
7.1.3 如何實現(xiàn)模型組裝與嵌套 183
7.1.4 如何實現(xiàn)多輸入多輸出模型 185
7.2 混合網(wǎng)絡模型 189
7.3 基于Xception架構(gòu)實現(xiàn)圖片分類任務 191
7.3.1 Xception架構(gòu) 191
7.3.2 使用image_dataset_from_directory函數(shù)構(gòu)建數(shù)據(jù)集 194
7.3.3 數(shù)據(jù)增強技術(shù) 199
7.3.4 數(shù)據(jù)增強器的使用 201
7.3.5 二維深度分離卷積層:SeparableConv2D 202
7.3.6 數(shù)據(jù)標準化前置與中置 205
7.3.7 編譯與訓練模型 206
7.3.8 在新數(shù)據(jù)上進行推理 207
7.4 殘差網(wǎng)絡在CIFAR10數(shù)據(jù)集上的實踐 208
7.4.1 CIFAR10數(shù)據(jù)集 208
7.4.2 深度殘差網(wǎng)絡:ResNet 209
7.4.3 基于ResNet構(gòu)建多分類任務模型 211
7.5 GloVe預訓練詞嵌入實踐 215
7.5.1 從原始文件構(gòu)建訓練集 216
7.5.2 解析并加載GloVe 220
7.5.3 在二分類模型中使用詞嵌入矩陣 221
7.5.4 模型的編譯與訓練 222
7.5.5 構(gòu)建測試集與模型評估 222
7.6 基于預訓練網(wǎng)絡VGG16完成圖片分類任務 224
7.6.1 預訓練網(wǎng)絡 224
7.6.2 預訓練網(wǎng)絡之特征提取方法 225
7.6.3 預訓練網(wǎng)絡之微調(diào)模型方法 230
7.7 生成式深度學習實踐 237
7.7.1 基于ResNet50的Deep Dream技術(shù)實踐 238
7.7.2 基于VGG19網(wǎng)絡的風格遷移實踐 244
7.8 使用自定義回調(diào)函數(shù)監(jiān)控模型的行為 253
7.8.1 將約束理論應用于模型調(diào)優(yōu) 254
7.8.2 構(gòu)建全局回調(diào)函數(shù) 255
7.8.3 構(gòu)建epoch級的自定義回調(diào)函數(shù) 258
7.8.4 構(gòu)建batch級的自定義回調(diào)函數(shù) 260
第8章 模型的工程封裝與部署
8.1 深度學習模型的封裝方法 263
8.2 使用Flask部署神經(jīng)網(wǎng)絡模型 264
8.2.1 Flask是什么 265
8.2.2 將模型部署成接口提供給第三方使用 267
8.2.3 深度學習模型與Web應用協(xié)同工作 270
8.3 基于TFX的部署實踐 273
8.3.1 TensorFlow Serving服務模型 273
8.3.2 基于TensorFlow Serving與Docker部署深度學習模型 275
第9章 回顧與展望
9.1 神經(jīng)網(wǎng)絡的架構(gòu) 281
9.2 構(gòu)建神經(jīng)網(wǎng)絡模型的流程與實踐 282
9.3 深度學習的局限性與展望 285