TensorFlow技術解析與實戰
內容描述
TensorFlow 是谷歌公司開發的深度學習框架,也是目前深度學習的主流框架之一。本書從深度學習的基礎講起,深入TensorFlow框架原理、模型構建、源代碼分析和網絡實現等各個方面。全書分為基礎篇、實戰篇和提高篇三部分。基礎篇講解人工智能的入門知識,深度學習的方法,TensorFlow的基礎原理、系統架構、設計理念、編程模型、常用API、批標準化、模型的存儲與加載、隊列與線程,實現一個自定義操作,並進行TensorFlow源代碼解析,介紹捲積神經網絡(CNN)和循環神經網絡(RNN)的演化發展及其TensorFlow實現、TensorFlow的高級框架等知識;實戰篇講解如何用TensorFlow寫一個神經網絡程序並介紹TensorFlow實現各種網絡(CNN、RNN和自編碼網絡等)並對MNIST數據集進行訓練,講解TensorFlow在人臉識別、自然語言處理、圖像和語音的結合、生成式對抗網絡等方面的應用;提高篇講解TensorFlow的分佈式原理、架構、模式、API,還會介紹TensorFlow XLA、TensorFlow Debugger、TensorFlow和Kubernetes結合、TensorFlowOnSpark、TensorFlow移動端應用,以及TensorFlow Serving、TensorFlow Fold和TensorFlow計算加速等其他特性。*後,附錄中列出一些可供參考的公開數據集,並結合作者的項目經驗介紹項目管理的一些建議。
目錄大綱
第一篇基礎篇
第1章人工智能概述2
1.1什麼是人工智能2
1.2什麼是深度學習5
1.3深度學習的入門方法7
1.4什麼是TensorFlow 11
1.5為什麼要學TensorFlow 12
1.5.1 TensorFlow的特性14
1.5 .2使用TensorFlow的公司15
1.5.3 TensorFlow的發展16
1.6機器學習的相關賽事16
1.6.1 ImageNet的ILSVRC 17
1.6.2 Kaggle 18
1.6.3天池大數據競賽19
1.7國內的人工智能公司20
1.8小結22
第2章TensorFlow環境的準備23
2.1下載TensorFlow 1.1.0 23
2.2基於pip的安裝23
2.2.1 Mac OS環境準備24
2.2.2 Ubuntu/Linux環境準備25
2.2.3 Windows環境準備25
2.3基於Java的安裝28
2.4從源代碼安裝29
2.5依賴的其他模塊30
2.5.1 numpy 30
2.5.2 matplotlib 31
2.5.3 jupyter 31
2.5.4 scikit-image 32
2.5.5 librosa 32
2.5.6 nltk 32
2.5.7 keras 33
2.5.8 tflearn 33
2.6小結33
第3章可視化TensorFlow 34
3.1 PlayGround 34
3.1.1數據35
3.1.2特徵36
3.1.3隱藏層36
3.1.4輸出37
3.2 TensorBoard 39
3.2.1 SCALARS面板40
3.2. 2 I MAGES面板41
3.2.3 AUDIO面板42
3.2.4 GRAPHS面板42
3.2.5 DISTRIBUTIONS面板43
3.2.6 HISTOGRAMS面板43
3.2.7 EMBEDDINGS面板44
3.3可視化的例子44
3.3.1降維分析44
3.3.2嵌入投影儀48
3.4小結51
第4章TensorFlow基礎知識52
4.1系統架構52
4.2設計理念53
4.3編程模型54
4.3.1邊56
4.3.2節點57
4.3.3其他概念57
4.4常用API 60
4.4.1圖、操作和張量60
4.4.2可視化61
4.5變量作用域62
4.5.1 variable_scope示例62
4.5.2 name_scope示例64
4.6批標準化64
4.6.1方法65
4.6.2優點65
4.6.3示例65
4.7神經元函數及優化方法66
4.7.1激活函數66
4.7.2卷積函數69
4.7.3池化函數72
4.7.4分類函數73
4.7.5優化方法74
4.8模型的存儲與加載79
4.8.1模型的存儲與加載79
4.8.2圖的存儲與加載82
4.9隊列和線程82
4.9.1隊列82
4.9.2隊列管理器85
4.9.3線程和協調器86
4.10加載數據87
4.10.1預加載數據87
4.10.2填充數據87
4.10.3從文件讀取數據88
4.11實現一個自 義操作92
4.11.1步驟92
4.11.2 佳實踐93
4.12小結101
第5章TensorFlow源代碼解析102
5.1 TensorFlow的目錄結構102
5.1.1 contirb 103
5.1.2 core 104
5.1.3 examples 105
5.1.4 g3doc 105
5.1.5 python 105
5.1.6 tensorboard 105
5.2 TensorFlow源代碼的學習方法106
5.3小結108
第6章神經網絡的發展及其TensorFlow實現109
6.1卷積神經網絡109
6.2卷積神經網絡發展110
6.2. 1網絡加深111
6.2.2增強卷積層的功能115
6.2.3從分類任務到檢測任務120
6.2.4增加新的功能模塊121
6.3 MNIST的AlexNet實現121
6.3.1加載數據121
6.3.2構建網絡模型122
6.3.3訓練模型和評估模型124
6.4循環神經網絡125
6.5循環神經網絡發展126
6.5.1增強隱藏層的功能127
6.5.2雙向化及加深網絡129
6.6 TensorFlow Model Zoo 131
6.7其他研究進展131
6.7.1強化學習132
6.7.2深度森林132
6.7.3深度學習與藝術132
6.8小結133
第7章TensorFlow的高級框架134
7.1 TFLearn 134
7.1.1加載數據134
7.1. 2構建網絡模型135
7.1.3訓練模型135
7.2 Keras 135
7.2.1 Keras的優點136
7.2.2 Keras的模型136
7.2.3 Keras的使用137
7.3小結141
第二篇實戰篇
第8章第一個TensorFlow程序144
8.1 TensorFlow的運行方式144
8.1.1生成及加載數據144
8.1.2構建網絡模型145
8.1.3訓練模型145
8.2超參數的設定146
8.3小結147
第9章TensorFlow在MNIST中的應用148
9.1 MNIST數據集簡介148
9.1.1訓練集的標記文件148
9.1.2訓練集的圖片文件149
9.1.3測試集的標記文件149
9.1.4測試集的圖片文件150
9.2 MNIST的分類問題150
9.2.1加載數據150
9.2.2構建回歸模型151
9.2.3訓練模型151
9.2.4評估模型152
9.3訓練過程的可視化152
9.4 MNIST的捲積神經網絡156
9.4.1加載數據157
9.4.2構建模型157
9.4. 3訓練模型和評估模型159
9.5 MNIST的循環神經網絡161
9.5.1加載數據161
9.5.2構建模型161
9.5.3訓練數據及評估模型163
9.6 MNIST的無監督學習164
9.6.1自編碼網絡164
9.6 .2 TensorFlow的自編碼網絡實現165
9.7小結169
第10章人臉識別170
10.1人臉識別簡介170
10.2人臉識別的技術流程171
10.2.1人臉圖像採集及檢測171
10.2.2人臉圖像預處理171
10.2.3人臉圖像特徵提取171
10.2.4人臉圖像匹配與識別172
10.3人臉識別的分類172
10.3.1人臉檢測172
10.3.2人臉關鍵點檢測173
10.3.3人臉驗證174
10.3.4人臉屬性檢測174
10.4人臉檢測175
10.4.1 LFW數據集175
10.4.2數據預處理175
10.4.3進行檢測176
10.5性別和年齡識別178
10.5.1數據預處理179
10.5.2構建模型181
10.5.3訓練模型182
10.5.4驗證模型184
10.6小結185
第11章自然語言處理186
11.1模型的選擇186
11.2英文數字語音識別187
11.2.1定義輸入數據並預處理數據188
11.2.2定義網絡模型188
11.2.3訓練模型188
11.2.4預測模型189
11.3智能聊天機器人189
11.3.1原理190
11.3.2 佳實踐191
11.4小結200
第12章圖像與語音的結合201
12.1看圖說話模 型201
12.1.1原理202
12.1.2 佳實踐203
12.2小結205
第13章生成式對抗網絡206
13.1生成式對抗網絡的原理206
13.2生成式對抗網絡的應用207
13.3生成式對抗網絡的實現208
13.4生成式對抗網絡的改進214
13.5小結214
第三篇提高篇
第14章分佈式TensorFlow 216
14.1分佈式原理216
14.1.1單機多卡和分佈式216
14.1.2分佈式部署方式217
14.2分佈式架構218
14.2.1客戶端、主節點和工作節點的關係218
14.2.2客戶端、主節點和工作節點的交互過程220
14.3分佈式模式221
14.3.1數據並行221
14.3.2同步更新和異步更新222
14.3 .3模型並行224
14.4分佈式API 225
14.5分佈式訓練代碼框架226
14.6分佈式佳實踐227
14.7小結235
第15章TensorFlow線性代數編譯框架XLA 236
15.1 XLA的優勢236
15.2 XLA的工作原理237
15.3 JIT編譯方式238
15.3.1打開JIT編譯238
15.3.2將操作符放在XLA設備上238
15.4 JIT編譯在MNIST上的實現239
15.5小結240
第16 TensorFlow Debugger 241
16.1 Debugger的使用示例241
16.2遠程調試方法245
16.3小結245
第17章TensorFlow和Kubernetes結合246
17.1為什麼需要Kubernetes 246
17.2分佈式TensorFlow在Kubernetes中的運行247
17.2.1部署及運行247
17.2.2其他應用253
17.3小結254
第18章TensorFlowOnSpark 255
18.1 TensorFlowOnSpark的架構255
18.2 TensorFlowOnSpark在MNIST上的實踐257
18.3小結261
第19章TensorFlow移動端應用262
19.1移動端應用原理262
19.1.1量化263
19.1.2優化矩陣乘法運算266
19.2 iOS系統實踐266
19.2.1環境準備266
19.2.2編譯演示程序並運行267
19.2.3自定義模型的編譯及運行269
19.3 Android系統實踐273
19.3.1環境準備274
19.3.2編譯演示程序並運行275
19.3.3自定義模型的編譯及運行277
19.4樹莓派實踐278
19.5小結278
第20章TensorFlow的其他特性279
20.1 TensorFlow Serving 279
20.2 TensorFlow Flod 280
20.3 TensorFlow計算加速281
20.3.1 CPU加速281
20.3.2 TPU加速和FPGA 速282
20.4小結283
第21章機器學習的評測體系284
21.1人臉識別的性能指標284
21.2聊天機器人的性能指標284
21.3機器翻譯的評價方法286
21.3.1 BLEU 286
21.3.2 METEOR 287
21.4常用的通用評價指標287
21.4.1 ROC和AUC 288
21.4.2 AP和mAP 288
21.5小結288
附錄A公開數據集289
附錄B項目管理經驗小談292
作者介紹
李嘉璇,創建TensorFlow交流社區(tf.greatgeekgrace.com),活躍於國內各大技術社區,知乎編程問題回答者。致力於人工智能的研究,對深度學習框架的架構、源碼分析及在不同領域的應用有濃厚興趣。
有過上百篇論文閱讀和深度學習經驗,處理圖像、社交文本數據情感分析、數據挖掘經驗,參與過基於深度學習的自動駕駛二維感知系統Hackathon競賽,曾任職百度研發工程師。