本書由流行深度學習框架Keras之父弗朗索瓦·肖萊執(zhí)筆,通過直觀的解釋和豐富的示例幫助你構建深度學習知識體系。作者避免使用數學符號,轉而采用Python代碼來解釋深度學習的核心思想。全書共計14章,既涵蓋了深度學習的基本原理,又體現(xiàn)了這一迅猛發(fā)展的領域在近幾年里取得的重要進展,包括Transformer架構的原理和示例。讀完本書后,你將能夠使用Keras解決從計算機視覺到自然語言處理等現(xiàn)實世界的諸多問題,包括圖像分類、圖像分割、時間序列預測、文本分類、機器翻譯、文本生成等。
近年來,深度學習在自然語言處理、計算機視覺等領域取得了非凡的進展。從機器翻譯和文本生成到自動駕駛和虛擬助手,我們受益于深度學習技術的逐漸普及。然而,深度學習還遠未發(fā)揮全部潛力。歡迎來到深度學習的世界!在這個規(guī)模呈爆發(fā)式增長的領域,仍有許多“寶藏”等待你去發(fā)掘。
本書由流行深度學習框架Keras之父弗朗索瓦·肖萊執(zhí)筆,不用數學公式,而用Python代碼幫助你直觀理解深度學習的核心思想。本書在第1版的基礎上進行了大幅更新和增補,以體現(xiàn)深度學習領域的快速發(fā)展。
- Keras和TensorFlow入門:詳解實踐深度學習所需的全部知識
- 神經網絡入門:分類與回歸
- 計算機視覺、時間序列預測、生成式深度學習
- 新增Transformer架構的原理及用法
- 新增機器學習的工作流程
- 隨書提供Jupyter notebook,采用TensorFlow 2.6
【作者簡介】
弗朗索瓦·肖萊(Franc?ois Chollet)
谷歌公司深度學習科學家,流行深度學習框架Keras之父。Keras的GitHub星標數近6萬,用戶數量已超100萬。此外,他也是TensorFlow框架的貢獻者,個人Kaggle競賽全球排名曾獲第17名。利用Keras,他致力于普及深度學習技術和實現(xiàn)通用人工智能。
【譯者簡介】
張亮(hysic)
畢業(yè)于北京大學物理學院,核安全高級工程師,深諳機器學習和數據分析,譯有《Python機器學習基礎教程》《Python數據處理》等。
第 1章 什么是深度學習 1
1.1 人工智能、機器學習和深度學習 1
1.1.1 人工智能 2
1.1.2 機器學習 2
1.1.3 從數據中學習規(guī)則與表示 3
1.1.4 深度學習之“深度” 5
1.1.5 用三張圖理解深度學習的工作原理 7
1.1.6 深度學習已取得的進展 8
1.1.7 不要相信短期炒作 9
1.1.8 人工智能的未來 10
1.2 深度學習之前:機器學習簡史 10
1.2.1 概率建模 11
1.2.2 早期神經網絡 11
1.2.3 核方法 11
1.2.4 決策樹、隨機森林和梯度提升機 12
1.2.5 回到神經網絡 13
1.2.6 深度學習有何不同 14
1.2.7 機器學習現(xiàn)狀 14
1.3 為什么要用深度學習,為什么是現(xiàn)在 16
1.3.1 硬件 17
1.3.2 數據 17
1.3.3 算法 18
1.3.4 新一輪投資熱潮 18
1.3.5 深度學習的普及 19
1.3.6 這種趨勢會持續(xù)下去嗎 20
第 2章 神經網絡的數學基礎 21
2.1 初識神經網絡 21
2.2 神經網絡的數據表示 25
2.2.1 標量(0階張量) 25
2.2.2 向量(1階張量) 25
2.2.3 矩陣(2階張量) 26
2.2.4 3階張量與更高階的張量 26
2.2.5 關鍵屬性 26
2.2.6 在NumPy中操作張量 28
2.2.7 數據批量的概念 28
2.2.8 現(xiàn)實世界中的數據張量實例 29
2.2.9 向量數據 29
2.2.10 時間序列數據或序列數據 29
2.2.11 圖像數據 30
2.2.12 視頻數據 31
2.3 神經網絡的“齒輪”:張量運算 31
2.3.1 逐元素運算 32
2.3.2 廣播 33
2.3.3 張量積 34
2.3.4 張量變形 36
2.3.5 張量運算的幾何解釋 37
2.3.6 深度學習的幾何解釋 40
2.4 神經網絡的“引擎”:基于梯度的優(yōu)化 40
2.4.1 什么是導數 41
2.4.2 張量運算的導數:梯度 42
2.4.3 隨機梯度下降 44
2.4.4 鏈式求導:反向傳播算法 46
2.5 回顧第 一個例子 51
2.5.1 用TensorFlow 從頭開始重新實現(xiàn)第 一個例子 52
2.5.2 完成一次訓練步驟 54
2.5.3 完整的訓練循環(huán) 55
2.5.4 評估模型 55
2.6 本章總結 56
第3章 Keras 和TensorFlow 入門 57
3.1 TensorFlow 簡介 57
3.2 Keras 簡介 58
3.3 Keras 和TensorFlow 簡史 59
3.4 建立深度學習工作區(qū) 60
3.4.1 Jupyter筆記本:運行深度學習實驗的首選方法 60
3.4.2 使用Colaboratory 61
3.5 TensorFlow入門 63
3.5.1 常數張量和變量 64
3.5.2 張量運算:用TensorFlow進行數學運算 66
3.5.3 重溫GradientTape API 66
3.5.4 一個端到端的例子:用TensorFlow編寫線性分類器 67
3.6 神經網絡剖析:了解核心Keras API 71
3.6.1 層:深度學習的基礎模塊 71
3.6.2 從層到模型 74
3.6.3 編譯步驟:配置學習過程 75
3.6.4 選擇損失函數 77
3.6.5 理解fit()方法 77
3.6.6 監(jiān)控驗證數據上的損失和指標 78
3.6.7 推斷:在訓練后使用模型 79
3.7 本章總結 80
第4章 神經網絡入門:分類與回歸 81
4.1 影評分類:二分類問題示例 82
4.1.1 IMDB 數據集 82
4.1.2 準備數據 83
4.1.3 構建模型 84
4.1.4 驗證你的方法 87
4.1.5 利用訓練好的模型對新數據進行預測 90
4.1.6 進一步實驗 90
4.1.7 小結 90
4.2 新聞分類:多分類問題示例 91
4.2.1 路透社數據集 91
4.2.2 準備數據 92
4.2.3 構建模型 92
4.2.4 驗證你的方法 93
4.2.5 對新數據進行預測 96
4.2.6 處理標簽和損失的另一種方法 96
4.2.7 擁有足夠大的中間層的重要性 96
4.2.8 進一步實驗 97
4.2.9 小結 97
4.3 預測房價:標量回歸問題示例 97
4.3.1 波士頓房價數據集 98
4.3.2 準備數據 98
4.3.3 構建模型 99
4.3.4 利用K折交叉驗證來驗證你的方法 99
4.3.5 對新數據進行預測 103
4.3.6 小結 103
4.4 本章總結 104
第5章 機器學習基礎 105
5.1 泛化:機器學習的目標 105
5.1.1 欠擬合與過擬合 105
5.1.2 深度學習泛化的本質 110
5.2 評估機器學習模型 115
5.2.1 訓練集、驗證集和測試集 115
5.2.2 超越基于常識的基準 118
5.2.3 模型評估的注意事項 119
5.3 改進模型擬合 119
5.3.1 調節(jié)關鍵的梯度下降參數 119
5.3.2 利用更好的架構預設 121
5.3.3 提高模型容量 121
5.4 提高泛化能力 123
5.4.1 數據集管理 123
5.4.2 特征工程 124
5.4.3 提前終止 125
5.4.4 模型正則化 125
5.5 本章總結 132
第6章 機器學習的通用工作流程 133
6.1 定義任務 134
6.1.1 定義問題 134
6.1.2 收集數據集 135
6.1.3 理解數據 138
6.1.4 選擇衡量成功的指標 139
6.2 開發(fā)模型 139
6.2.1 準備數據 139
6.2.2 選擇評估方法 140
6.2.3 超越基準 141
6.2.4 擴大模型規(guī)模:開發(fā)一個過擬合的模型 142
6.2.5 模型正則化與調節(jié)超參數 142
6.3 部署模型 143
6.3.1 向利益相關者解釋你的工作并設定預期 143
6.3.2 部署推斷模型 143
6.3.3 監(jiān)控模型在真實環(huán)境中的性能 146
6.3.4 維護模型 146
6.4 本章總結 147
第7章 深入Keras 148
7.1 Keras 工作流程 148
7.2 構建Keras 模型的不同方法 149
7.2.1 序貫模型 149
7.2.2 函數式API 152
7.2.3 模型子類化 157
7.2.4 混合使用不同的組件 159
7.2.5 用正確的工具完成工作 160
7.3 使用內置的訓練循環(huán)和評估循環(huán) 160
7.3.1 編寫自定義指標 161
7.3.2 使用回調函數 162
7.3.3 編寫自定義回調函數 164
7.3.4 利用TensorBoard進行監(jiān)控和可視化 165
7.4 編寫自定義的訓練循環(huán)和評估循環(huán) 167
7.4.1 訓練與推斷 168
7.4.2 指標的低階用法 169
7.4.3 完整的訓練循環(huán)和評估循環(huán) 169
7.4.4 利用tf.function加快運行速度 171
7.4.5 在fit()中使用自定義訓練循環(huán) 172
7.5 本章總結 174
第8章 計算機視覺深度學習入門 175
8.1 卷積神經網絡入門 176
8.1.1 卷積運算 178
8.1.2 最大匯聚運算 182
8.2 在小型數據集上從頭開始訓練一個卷積神經網絡 184
8.2.1 深度學習對數據量很小的問題的適用性 184
8.2.2 下載數據 185
8.2.3 構建模型 . 187
8.2.4 數據預處理 189
8.2.5 使用數據增強 193
8.3 使用預訓練模型 196
8.3.1 使用預訓練模型做特征提取 197
8.3.2 微調預訓練模型 204
8.4 本章總結 208
第9章 計算機視覺深度學習進階 209
9.1 三項基本的計算機視覺任務 209
9.2 圖像分割示例 210
9.3 現(xiàn)代卷積神經網絡架構模式 218
9.3.1 模塊化、層次結構和復用 218
9.3.2 殘差連接 221
9.3.3 批量規(guī)范化 224
9.3.4 深度可分離卷積 226
9.3.5 綜合示例:一個類似Xception的迷你模型 227
9.4 解釋卷積神經網絡學到的內容 229
9.4.1 中間激活值的可視化 230
9.4.2 卷積神經網絡濾波器的可視化 235
9.4.3 類激活熱力圖的可視化 241
9.5 本章總結 246
第 10章 深度學習處理時間序列 247
10.1 不同類型的時間序列任務 247
10.2 溫度預測示例 248
10.2.1 準備數據 251
10.2.2 基于常識、不使用機器學習的基準 254
10.2.3 基本的機器學習模型 254
10.2.4 一維卷積模型 256
10.2.5 第 一個RNN 基準 258
10.3 理解RNN 259
10.4 RNN 的高級用法 265
10.4.1 利用循環(huán)dropout 降低過擬合 265
10.4.2 循環(huán)層堆疊 268
10.4.3 使用雙向RNN 269
10.4.4 進一步實驗 271
10.5 本章總結 272
第 11章 深度學習處理文本 273
11.1 自然語言處理概述 273
11.2 準備文本數據 274
11.2.1 文本標準化 275
11.2.2 文本拆分(詞元化) 276
11.2.3 建立詞表索引 277
11.2.4 使用TextVectorization層 278
11.3 表示單詞組的兩種方法:集合和序列 282
11.3.1 準備IMDB 影評數據 282
11.3.2 將單詞作為集合處理:詞袋方法 284
11.3.3 將單詞作為序列處理:序列模型方法 289
11.4 Transformer架構 298
11.4.1 理解自注意力 298
11.4.2 多頭注意力 302
11.4.3 Transformer編碼器 303
11.4.4 何時使用序列模型而不是詞袋模型 309
11.5 超越文本分類:序列到序列學習 310
11.5.1 機器翻譯示例 312
11.5.2 RNN 的序列到序列學習 314
11.5.3 使用Transformer 進行序列到序列學習 318
11.6 本章總結 323
第 12章 生成式深度學習 324
12.1 文本生成 325
12.1.1 生成式深度學習用于序列生成的簡史 325
12.1.2 如何生成序列數據 326
12.1.3 采樣策略的重要性 327
12.1.4 用Keras 實現(xiàn)文本生成 328
12.1.5 帶有可變溫度采樣的文本生成回調函數 331
12.1.6 小結 334
12.2 DeepDream 334
12.2.1 用Keras 實現(xiàn)DeepDream 335
12.2.2 小結 341
12.3 神經風格遷移 341
12.3.1 內容損失 342
12.3.2 風格損失 342
12.3.3 用Keras 實現(xiàn)神經風格遷移 343
12.3.4 小結 348
12.4 用變分自編碼器生成圖像 348
12.4.1 從圖像潛在空間中采樣 348
12.4.2 圖像編輯的概念向量 350
12.4.3 變分自編碼器 350
12.4.4 用Keras 實現(xiàn)變分自編碼器 352
12.4.5 小結 357
12.5 生成式對抗網絡入門 358
12.5.1 簡要實現(xiàn)流程 359
12.5.2 諸多技巧 360
12.5.3 CelebA 數據集 360
12.5.4 判別器 361
12.5.5 生成器 362
12.5.6 對抗網絡 364
12.5.7 小結 366
12.6 本章總結 367
第 13章 適合現(xiàn)實世界的最佳實踐 368
13.1 將模型性能發(fā)揮到極致 368
13.1.1 超參數優(yōu)化 368
13.1.2 模型集成 375
13.2 加速模型訓練 376
13.2.1 使用混合精度加快GPU上的訓練速度 377
13.2.2 多GPU訓練 380
13.2.3 TPU訓練 382
13.3 本章總結 384
第 14章 總結 385
14.1 重點概念回顧 385
14.1.1 人工智能的多種方法 385
14.1.2 深度學習在機器學習領域中的特殊之處 386
14.1.3 如何看待深度學習 386
14.1.4 關鍵的推動技術 387
14.1.5 機器學習的通用工作流程 388
14.1.6 關鍵網絡架構 388
14.1.7 可能性空間 392
14.2 深度學習的局限性 394
14.2.1 將機器學習模型擬人化的風險 394
14.2.2 自動機與智能體 396
14.2.3 局部泛化與極端泛化 397
14.2.4 智能的目的 399
14.2.5 逐步提高泛化能力 400
14.3 如何實現(xiàn)更加通用的人工智能 401
14.3.1 設定正確目標的重要性:捷徑法則 401
14.3.2 新目標 402
14.4 實現(xiàn)智能:缺失的內容 403
14.4.1 智能是對抽象類比的敏感性 404
14.4.2 兩種抽象 405
14.4.3 深度學習所缺失的那一半 407
14.5 深度學習的未來 408
14.5.1 模型即程序 408
14.5.2 將深度學習與程序合成融合 409
14.5.3 終身學習和模塊化子程序復用 411
14.5.4 長期愿景 412
14.6 了解快速發(fā)展的領域的最新進展 413
14.6.1 在Kaggle 上練習解決現(xiàn)實世界的問題 413
14.6.2 在arXiv上了解最新進展 414
14.6.3 探索Keras 生態(tài)系統(tǒng) 414
14.7 結束語 414