上篇 初見
第1天 什么是深度學習 2
1.1 星星之火,可以燎原 3
1.2 師夷長技 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è)熱是風向標 8
1.4 練習題 9
第2天 深度學習的過往 10
2.1 傳統(tǒng)機器學習的局限性 10
2.2 從表示學習到深度學習 11
2.3 監(jiān)督學習 12
2.4 反向傳播算法 13
2.5 卷積神經網絡 15
2.6 深度學習反思 17
2.7 練習題 18
2.8 參考資料 18
第3天 深度學習工具匯總 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 常見問題 32
4.6 練習題 32
4.7 參考資料 33
第5天 Caffe依賴包解析 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天 運行手寫體數(shù)字識別例程 50
6.1 MNIST數(shù)據集 50
6.1.1 下載MNIST數(shù)據集 50
6.1.2 MNIST數(shù)據格式描述 51
6.1.3 轉換格式 53
6.2 LeNet-5模型 60
6.2.1 LeNet-5模型描述 60
6.2.2 訓練超參數(shù) 65
6.2.3 訓練日志 66
6.2.4 用訓練好的模型對數(shù)據進行預測 76
6.2.5 Windows下訓練模型 76
6.3 回顧 78
6.4 練習題 79
6.5 參考資料 79
篇尾語 80
中篇 熱戀
第7天 Caffe代碼梳理 82
7.1 Caffe目錄結構 82
7.2 如何有效閱讀Caffe源碼 84
7.3 Caffe支持哪些深度學習特性 86
7.3.1 卷積層 86
7.3.2 全連接層 89
7.3.3 激活函數(shù) 91
7.4 小結 99
7.5 練習題 99
7.6 參考資料 100
第8天 Caffe數(shù)據結構 101
8.1 Blob 101
8.1.1 Blob基本用法 102
8.1.2 數(shù)據結構描述 108
8.1.3 Blob是怎樣煉成的 109
8.2 Layer 125
8.2.1 數(shù)據結構描述 126
8.2.2 Layer是怎樣建成的 127
8.3 Net 136
8.3.1 Net基本用法 136
8.3.2 數(shù)據結構描述 139
8.3.3 Net是怎樣繪成的 139
8.4 機制和策略 146
8.5 練習題 147
8.6 參考資料 148
第9天 Caffe I/O模塊 149
9.1 數(shù)據讀取層 149
9.1.1 數(shù)據結構描述 149
9.1.2 數(shù)據讀取層實現(xiàn) 150
9.2 數(shù)據變換器 155
9.2.1 數(shù)據結構描述 155
9.2.2 數(shù)據變換器的實現(xiàn) 156
9.3 練習題 171
第10天 Caffe模型 172
10.1 prototxt表示 173
10.2 內存中的表示 176
10.3 磁盤上的表示 176
10.4 Caffe Model Zoo 178
10.5 練習題 180
10.6 參考資料 180
第11天 Caffe前向傳播計算 181
11.1 前向傳播的特點 181
11.2 前向傳播的實現(xiàn) 182
11.2.1 DAG構造過程 182
11.2.2 Net Forward實現(xiàn) 190
11.3 練習題 192
第12天 Caffe反向傳播計算 193
12.1 反向傳播的特點 193
12.2 損失函數(shù) 193
12.2.1 算法描述 194
12.2.2 參數(shù)描述 195
12.2.3 源碼分析 195
12.3 反向傳播的實現(xiàn) 203
12.4 練習題 205
第13天 Caffe最優(yōu)化求解過程 207
13.1 求解器是什么 207
13.2 求解器是如何實現(xiàn)的 208
13.2.1 算法描述 208
13.2.2 數(shù)據結構描述 210
13.2.3 CNN訓練過程 218
13.2.4 CNN預測過程 225
13.2.5 Solver的快照和恢復功能 227
13.3 練習題 230
第14天 Caffe實用工具 231
14.1 訓練和預測 231
14.2 特征提取 241
14.3 轉換圖像格式 247
14.4 計算圖像均值 254
14.5 自己編寫工具 257
14.6 練習題 257
篇尾語 258
下篇 升華
第15天 Caffe計算加速 260
15.1 Caffe計時功能 260
15.2 Caffe GPU加速模式 262
15.2.1 GPU是什么 262
15.2.2 CUDA是什么 263
15.2.3 GPU、CUDA和深度學習 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 數(shù)據可視化 275
16.1.1 MNIST數(shù)據可視化 275
16.1.2 CIFAR10數(shù)據可視化 277
16.1.3 ImageNet數(shù)據可視化 278
16.2 模型可視化 279
16.2.1 網絡結構可視化 279
16.2.2 網絡權值可視化 281
16.3 特征圖可視化 288
16.4 學習曲線 295
16.5 小結 298
16.6 練習題 298
16.7 參考資料 299
第17天 Caffe遷移和部署 300
17.1 從開發(fā)測試到生產部署 300
17.2 使用Docker 302
17.2.1 Docker基本概念 302
17.2.2 Docker安裝 303
17.2.3 Docker入門 305
17.2.4 Docker使用進階 312
17.3 練習題 317
17.4 參考資料 317
第18天 關于ILSVRC不得不說的一些事兒 318
18.1 ImageNet數(shù)據集 318
18.2 ILSVRC比賽項目 319
18.2.1 圖像分類(CLS) 320
18.2.2 目標定位(LOC) 320
18.2.3 目標檢測(DET) 321
18.2.4 視頻目標檢測(VID) 322
18.2.5 場景分類 322
18.3 Caffe ILSVRC實踐 323
18.4 練習題 326
18.5 參考資料 326
第19天 放之四海而皆準 327
19.1 圖像分類 327
19.1.1 問題描述 327
19.1.2 應用案例——商品分類 330
19.2 圖像中的字符識別 332
19.2.1 問題描述 332
19.2.2 應用案例——身份證實名認證 333
19.3 目標檢測 337
19.3.1 問題描述 337
19.3.2 最佳實踐——運行R-CNN例程 337
19.4 人臉識別 340
19.4.1 問題描述 340
19.4.2 最佳實踐——使用Face++ SDK實現(xiàn)人臉檢測 342
19.5 自然語言處理 343
19.5.1 問題描述 343
19.5.2 最佳實踐——NLP-Caffe 344
19.6 藝術風格 350
19.6.1 問題描述 350
19.6.2 最佳實踐——style-transfer 352
19.7 小結 354
19.8 練習題 354
19.9 參考資料 355
第20天 繼往開來的領路人 356
20.1 Caffe Traps and Pitfalls 356
20.1.1 不支持任意數(shù)據類型 356
20.1.2 不夠靈活的高級接口 357
20.1.3 繁雜的依賴包 357
20.1.4 堪憂的卷積層實現(xiàn) 357
20.1.5 架構之殤 358
20.1.6 應用場景局限性 358
20.2 最佳實踐——Caffe2 359
20.3 練習題 361
20.4 參考資料 362
第21天 新生 363
21.1 三人行,必有我?guī)? 363
21.2 路漫漫其修遠兮,吾將上下而求索 364
篇尾語 366
結束語 367
附錄A 其他深度學習工具