√ 本書(shū)內容來(lái)自作者長(cháng)期學(xué)習研究及在阿里一線(xiàn)相關(guān)工作經(jīng)歷。
√ Caffe是應用廣的深度學(xué)習框架,非常適于用來(lái)練手和入門(mén)。
√ 本書(shū)側重解決實(shí)際問(wèn)題及理解深度學(xué)習理論,實(shí)例、習題豐富。
√ 既狠抓基功又緊扣產(chǎn)業(yè),既詳述工具、模型又深入分析源碼。
《深度學(xué)習:21天實(shí)戰Caffe》是一本深度學(xué)習入門(mén)讀物。以目前已經(jīng)大量用于線(xiàn)上系統的深度學(xué)習框架Caffe為例,由淺入深,從 Caffe 的配置、部署、使用開(kāi)始學(xué)習,通過(guò)閱讀 Caffe 源碼理解其精髓,加強對深度學(xué)習理論的理解,最終達到熟練運用 Caffe 解決實(shí)際問(wèn)題的目的。和國外機器學(xué)習、深度學(xué)習大部頭著(zhù)作相比,《深度學(xué)習:21天實(shí)戰Caffe》偏重動(dòng)手實(shí)踐,將難以捉摸的枯燥理論用淺顯易懂的形式表達,透過(guò)代碼揭開(kāi)其神秘面紗,更多地貼近實(shí)際應用。
卜居,真名趙永科,CSDN 博主,現就職于阿里云計算有限公司,從事計算機體系結構、高性能計算系統設計。對計算機視覺(jué)、深度學(xué)習具有濃厚興趣。擅長(cháng) CPU/GPU/FPGA 的算法加速與性能優(yōu)化。
上篇 初見(jiàn)
第1天 什么是深度學(xué)習 2
1.1 星星之火,可以燎原 3
1.2 師夷長(cháng)技 4
1.2.1 谷歌與微軟 4
1.2.2 Facebook、亞馬遜與NVIDIA 5
1.3 中國崛起 6
1.3.1 BAT在路上 6
1.3.2 星光閃耀 7
1.3.3 企業(yè)熱是風(fēng)向標 8
1.4 練習題 9
第2天 深度學(xué)習的過(guò)往 10
2.1 傳統機器學(xué)習的局限性 10
2.2 從表示學(xué)習到深度學(xué)習 11
2.3 監督學(xué)習 12
2.4 反向傳播算法 13
2.5 卷積神經(jīng)網(wǎng)絡(luò ) 15
2.6 深度學(xué)習反思 17
2.7 練習題 18
2.8 參考資料 18
第3天 深度學(xué)習工具匯總 19
3.1 Caffe 19
3.2 Torch & OverFeat 20
3.3 MxNet 22
3.4 TensorFlow 22
3.5 Theano 24
3.6 CNTK 24
3.7 練習題 25
3.8 參考資料 26
第4天 準備Caffe環(huán)境 27
4.1 Mac OS環(huán)境準備 27
4.2 Ubuntu環(huán)境準備 28
4.3 RHEL/Fedora/CentOS環(huán)境準備 29
4.4 Windows環(huán)境準備 29
4.5 常見(jiàn)問(wèn)題 32
4.6 練習題 32
4.7 參考資料 33
第5天 Caffe依賴(lài)包解析 34
5.1 ProtoBuffer 34
5.2 Boost 38
5.3 GFLAGS 38
5.4 GLOG 39
5.5 BLAS 40
5.6 HDF5 41
5.7 OpenCV 42
5.8 LMDB和LEVELDB 42
5.9 Snappy 43
5.10 小結 43
5.11 練習題 49
5.12 參考資料 49
第6天 運行手寫(xiě)體數字識別例程 50
6.1 MNIST數據集 50
6.1.1 下載MNIST數據集 50
6.1.2 MNIST數據格式描述 51
6.1.3 轉換格式 53
6.2 LeNet-5模型 60
6.2.1 LeNet-5模型描述 60
6.2.2 訓練超參數 65
6.2.3 訓練日志 66
6.2.4 用訓練好的模型對數據進(jìn)行預測 76
6.2.5 Windows下訓練模型 76
6.3 回顧 78
6.4 練習題 79
6.5 參考資料 79
篇尾語(yǔ) 80
中篇 熱戀
第7天 Caffe代碼梳理 82
7.1 Caffe目錄結構 82
7.2 如何有效閱讀Caffe源碼 84
7.3 Caffe支持哪些深度學(xué)習特性 86
7.3.1 卷積層 86
7.3.2 全連接層 89
7.3.3 激活函數 91
7.4 小結 99
7.5 練習題 99
7.6 參考資料 100
第8天 Caffe數據結構 101
8.1 Blob 101
8.1.1 Blob基本用法 102
8.1.2 數據結構描述 108
8.1.3 Blob是怎樣煉成的 109
8.2 Layer 125
8.2.1 數據結構描述 126
8.2.2 Layer是怎樣建成的 127
8.3 Net 136
8.3.1 Net基本用法 136
8.3.2 數據結構描述 139
8.3.3 Net是怎樣繪成的 139
8.4 機制和策略 146
8.5 練習題 147
8.6 參考資料 148
第9天 Caffe I/O模塊 149
9.1 數據讀取層 149
9.1.1 數據結構描述 149
9.1.2 數據讀取層實(shí)現 150
9.2 數據變換器 155
9.2.1 數據結構描述 155
9.2.2 數據變換器的實(shí)現 156
9.3 練習題 171
第10天 Caffe模型 172
10.1 prototxt表示 173
10.2 內存中的表示 176
10.3 磁盤(pán)上的表示 176
10.4 Caffe Model Zoo 178
10.5 練習題 180
10.6 參考資料 180
第11天 Caffe前向傳播計算 181
11.1 前向傳播的特點(diǎn) 181
11.2 前向傳播的實(shí)現 182
11.2.1 DAG構造過(guò)程 182
11.2.2 Net Forward實(shí)現 190
11.3 練習題 192
第12天 Caffe反向傳播計算 193
12.1 反向傳播的特點(diǎn) 193
12.2 損失函數 193
12.2.1 算法描述 194
12.2.2 參數描述 195
12.2.3 源碼分析 195
12.3 反向傳播的實(shí)現 203
12.4 練習題 205
第13天 Caffe最優(yōu)化求解過(guò)程 207
13.1 求解器是什么 207
13.2 求解器是如何實(shí)現的 208
13.2.1 算法描述 208
13.2.2 數據結構描述 210
13.2.3 CNN訓練過(guò)程 218
13.2.4 CNN預測過(guò)程 225
13.2.5 Solver的快照和恢復功能 227
13.3 練習題 230
第14天 Caffe實(shí)用工具 231
14.1 訓練和預測 231
14.2 特征提取 241
14.3 轉換圖像格式 247
14.4 計算圖像均值 254
14.5 自己編寫(xiě)工具 257
14.6 練習題 257
篇尾語(yǔ) 258
下篇 升華
第15天 Caffe計算加速 260
15.1 Caffe計時(shí)功能 260
15.2 Caffe GPU加速模式 262
15.2.1 GPU是什么 262
15.2.2 CUDA是什么 263
15.2.3 GPU、CUDA和深度學(xué)習 263
15.2.4 Caffe GPU環(huán)境準備 264
15.2.5 切換到Caffe GPU加速模式 268
15.3 Caffe cuDNN加速模式 269
15.3.1 獲取cuDNN 270
15.3.2 切換到Caffe cuDNN加速模式 270
15.3.3 Caffe不同硬件配置性能 272
15.4 練習題 273
15.5 參考資料 273
第16天 Caffe可視化方法 275
16.1 數據可視化 275
16.1.1 MNIST數據可視化 275
16.1.2 CIFAR10數據可視化 277
16.1.3 ImageNet數據可視化 278
16.2 模型可視化 279
16.2.1 網(wǎng)絡(luò )結構可視化 279
16.2.2 網(wǎng)絡(luò )權值可視化 281
16.3 特征圖可視化 288
16.4 學(xué)習曲線(xiàn) 295
16.5 小結 298
16.6 練習題 298
16.7 參考資料 299
第17天 Caffe遷移和部署 300
17.1 從開(kāi)發(fā)測試到生產(chǎn)部署 300
17.2 使用Docker 302
17.2.1 Docker基本概念 302
17.2.2 Docker安裝 303
17.2.3 Docker入門(mén) 305
17.2.4 Docker使用進(jìn)階 312
17.3 練習題 317
17.4 參考資料 317
第18天 關(guān)于ILSVRC不得不說(shuō)的一些事兒 318
18.1 ImageNet數據集 318
18.2 ILSVRC比賽項目 319
18.2.1 圖像分類(lèi)(CLS) 320
18.2.2 目標定位(LOC) 320
18.2.3 目標檢測(DET) 321
18.2.4 視頻目標檢測(VID) 322
18.2.5 場(chǎng)景分類(lèi) 322
18.3 Caffe ILSVRC實(shí)踐 323
18.4 練習題 326
18.5 參考資料 326
第19天 放之四海而皆準 327
19.1 圖像分類(lèi) 327
19.1.1 問(wèn)題描述 327
19.1.2 應用案例——商品分類(lèi) 330
19.2 圖像中的字符識別 332
19.2.1 問(wèn)題描述 332
19.2.2 應用案例——身份證實(shí)名認證 333
19.3 目標檢測 337
19.3.1 問(wèn)題描述 337
19.3.2 最佳實(shí)踐——運行R-CNN例程 337
19.4 人臉識別 340
19.4.1 問(wèn)題描述 340
19.4.2 最佳實(shí)踐——使用Face++ SDK實(shí)現人臉檢測 342
19.5 自然語(yǔ)言處理 343
19.5.1 問(wèn)題描述 343
19.5.2 最佳實(shí)踐——NLP-Caffe 344
19.6 藝術(shù)風(fēng)格 350
19.6.1 問(wèn)題描述 350
19.6.2 最佳實(shí)踐——style-transfer 352
19.7 小結 354
19.8 練習題 354
19.9 參考資料 355
第20天 繼往開(kāi)來(lái)的領(lǐng)路人 356
20.1 Caffe Traps and Pitfalls 356
20.1.1 不支持任意數據類(lèi)型 356
20.1.2 不夠靈活的高級接口 357
20.1.3 繁雜的依賴(lài)包 357
20.1.4 堪憂(yōu)的卷積層實(shí)現 357
20.1.5 架構之殤 358
20.1.6 應用場(chǎng)景局限性 358
20.2 最佳實(shí)踐——Caffe2 359
20.3 練習題 361
20.4 參考資料 362
第21天 新生 363
21.1 三人行,必有我師 363
21.2 路漫漫其修遠兮,吾將上下而求索 364
篇尾語(yǔ) 366
結束語(yǔ) 367
附錄A 其他深度學(xué)習工具