《深度學習:21天實戰Caffe》,本書作者趙永科,由電子工業出版社出版。
基本介紹
- 書名:深度學習:21天實戰Caffe
- 作者:趙永科
- ISBN:9787121291159
- 頁數:392頁
- 定價:79元
- 出版社:電子工業出版社
- 裝幀:平裝
內容簡介,作者簡介,書籍目錄,
內容簡介
《深度學習:21天實戰Caffe》是一本深度學習入門讀物。以目前已經大量用於線上系統的深度學習框架Caffe為例,由淺入深,從 Caffe 的配置、部署、使用開始學習,通過閱讀 Caffe 源碼理解其精髓,加強對深度學習理論的理解,最終達到熟練運用 Caffe 解決實際問題的目的。和國外機器學習、深度學習大部頭著作相比,《深度學習:21天實戰Caffe》偏重動手實踐,將難以捉摸的枯燥理論用淺顯易懂的形式表達,透過代碼揭開其神秘面紗,更多地貼近實際套用。
作者簡介
書籍目錄
上篇 初見
第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 企業熱是風向標 8
1.4 練習題 9
第2天 深度學習的過往 10
2.1 傳統機器學習的局限性 10
2.2 從表示學習到深度學習 11
2.3 監督學習 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環境 27
4.1 Mac OS環境準備 27
4.2 Ubuntu環境準備 28
4.3 RHEL/Fedora/CentOS環境準備 29
4.4 Windows環境準備 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天 運行手寫體數字識別例程 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 用訓練好的模型對數據進行預測 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 激活函式 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 數據讀取層實現 150
9.2 數據變換器 155
9.2.1 數據結構描述 155
9.2.2 數據變換器的實現 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 前向傳播的實現 182
11.2.1 DAG構造過程 182
11.2.2 Net Forward實現 190
11.3 練習題 192
第12天 Caffe反向傳播計算 193
12.1 反向傳播的特點 193
12.2 損失函式 193
12.2.1 算法描述 194
12.2.2 參數描述 195
12.2.3 源碼分析 195
12.3 反向傳播的實現 203
12.4 練習題 205
第13天 Caffe最最佳化求解過程 207
13.1 求解器是什麼 207
13.2 求解器是如何實現的 208
13.2.1 算法描述 208
13.2.2 數據結構描述 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環境準備 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 網路結構可視化 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 從開發測試到生產部署 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數據集 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實現人臉檢測 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 不支持任意數據類型 356
20.1.2 不夠靈活的高級接口 357
20.1.3 繁雜的依賴包 357
20.1.4 堪憂的卷積層實現 357
20.1.5 架構之殤 358
20.1.6 套用場景局限性 358
20.2 最佳實踐--Caffe2 359
20.3 練習題 361
20.4 參考資料 362
第21天 新生 363
21.1 三人行,必有我師 363
21.2 路漫漫其修遠兮,吾將上下而求索 364
篇尾語 366
結束語 367
附錄A 其他深度學習工具
第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 企業熱是風向標 8
1.4 練習題 9
第2天 深度學習的過往 10
2.1 傳統機器學習的局限性 10
2.2 從表示學習到深度學習 11
2.3 監督學習 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環境 27
4.1 Mac OS環境準備 27
4.2 Ubuntu環境準備 28
4.3 RHEL/Fedora/CentOS環境準備 29
4.4 Windows環境準備 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天 運行手寫體數字識別例程 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 用訓練好的模型對數據進行預測 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 激活函式 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 數據讀取層實現 150
9.2 數據變換器 155
9.2.1 數據結構描述 155
9.2.2 數據變換器的實現 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 前向傳播的實現 182
11.2.1 DAG構造過程 182
11.2.2 Net Forward實現 190
11.3 練習題 192
第12天 Caffe反向傳播計算 193
12.1 反向傳播的特點 193
12.2 損失函式 193
12.2.1 算法描述 194
12.2.2 參數描述 195
12.2.3 源碼分析 195
12.3 反向傳播的實現 203
12.4 練習題 205
第13天 Caffe最最佳化求解過程 207
13.1 求解器是什麼 207
13.2 求解器是如何實現的 208
13.2.1 算法描述 208
13.2.2 數據結構描述 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環境準備 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 網路結構可視化 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 從開發測試到生產部署 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數據集 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實現人臉檢測 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 不支持任意數據類型 356
20.1.2 不夠靈活的高級接口 357
20.1.3 繁雜的依賴包 357
20.1.4 堪憂的卷積層實現 357
20.1.5 架構之殤 358
20.1.6 套用場景局限性 358
20.2 最佳實踐--Caffe2 359
20.3 練習題 361
20.4 參考資料 362
第21天 新生 363
21.1 三人行,必有我師 363
21.2 路漫漫其修遠兮,吾將上下而求索 364
篇尾語 366
結束語 367
附錄A 其他深度學習工具