Python深度學習(第2版) Deep Learning with Python, 2/e

François Chollet

  • Python深度學習(第2版)-preview-1
  • Python深度學習(第2版)-preview-2
Python深度學習(第2版)-preview-1

商品描述

本書由流行深度學習框架Keras之父弗朗索瓦·肖萊執筆,通過直觀的解釋和豐富的示例幫助你構建深度學習知識體系。作者避免使用數學符號,轉而採用Python代碼來解釋深度學習的核心思想。全書共計14章,既涵蓋了深度學習的基本原理,又體現了這一迅猛發展的領域在近幾年裡取得的重要進展,包括Transformer架構的原理和示例。讀完本書後,你將能夠使用Keras解決從電腦視覺到自然語言處理等現實世界的諸多問題,包括圖像分類、圖像分割、時間序列預測、文本分類、機器翻譯、文本生成等。

作者簡介

【作者简介】

 

弗朗索瓦·肖莱(Franc?ois Chollet)

 

谷歌公司深度学习科学家,流行深度学习框架Keras之父。Keras的GitHub星标数近6万,用户数量已超100万。此外,他也是TensorFlow框架的贡献者,个人Kaggle竞赛全球排名曾获第17名。利用Keras,他致力于普及深度学习技术和实现通用人工智能。

 

【译者简介】

 

张亮(hysic)

 

毕业于北京大学物理学院,核安全高级工程师,深谙机器学习和数据分析,译有《Python机器学习基础教程》《Python数据处理》等。

目錄大綱

第 1章 什麽是深度學習 1

1.1 人工智能、機器學習和深度學習 1

1.1.1 人工智能 2

1.1.2 機器學習 2

1.1.3 從數據中學習規則與表示 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 機器學習現狀 14

1.3 為什麽要用深度學習,為什麽是現在 16

1.3.1 硬件 17

1.3.2 數據 17

1.3.3 算法 18

1.3.4 新一輪投資熱潮 18

1.3.5 深度學習的普及 19

1.3.6 這種趨勢會持續下去嗎 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 現實世界中的數據張量實例 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 神經網絡的“引擎”:基於梯度的優化 40

2.4.1 什麽是導數 41

2.4.2 張量運算的導數:梯度 42

2.4.3 隨機梯度下降 44

2.4.4 鏈式求導:反向傳播算法 46

2.5 回顧第 一個例子 51

2.5.1 用TensorFlow 從頭開始重新實現第 一個例子 52

2.5.2 完成一次訓練步驟 54

2.5.3 完整的訓練循環 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 建立深度學習工作區 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 監控驗證數據上的損失和指標 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 調節關鍵的梯度下降參數 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 開發模型 139

6.2.1 準備數據 139

6.2.2 選擇評估方法 140

6.2.3 超越基準 141

6.2.4 擴大模型規模:開發一個過擬合的模型 142

6.2.5 模型正則化與調節超參數 142

6.3 部署模型 143

6.3.1 向利益相關者解釋你的工作並設定預期 143

6.3.2 部署推斷模型 143

6.3.3 監控模型在真實環境中的性能 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 使用內置的訓練循環和評估循環 160

7.3.1 編寫自定義指標 161

7.3.2 使用回調函數 162

7.3.3 編寫自定義回調函數 164

7.3.4 利用TensorBoard進行監控和可視化 165

7.4 編寫自定義的訓練循環和評估循環 167

7.4.1 訓練與推斷 168

7.4.2 指標的低階用法 169

7.4.3 完整的訓練循環和評估循環 169

7.4.4 利用tf.function加快運行速度 171

7.4.5 在fit()中使用自定義訓練循環 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 現代捲積神經網絡架構模式 218

9.3.1 模塊化、層次結構和復用 218

9.3.2 殘差連接 221

9.3.3 批量規範化 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 利用循環dropout 降低過擬合 265

10.4.2 循環層堆疊 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 實現文本生成 328

12.1.5 帶有可變溫度採樣的文本生成回調函數 331

12.1.6 小結 334

12.2 DeepDream 334

12.2.1 用Keras 實現DeepDream 335

12.2.2 小結 341

12.3  神經風格遷移 341

12.3.1 內容損失 342

12.3.2 風格損失 342

12.3.3 用Keras 實現神經風格遷移 343

12.3.4 小結 348

12.4 用變分自編碼器生成圖像 348

12.4.1 從圖像潛在空間中採樣 348

12.4.2 圖像編輯的概念向量 350

12.4.3 變分自編碼器 350

12.4.4 用Keras 實現變分自編碼器 352

12.4.5 小結 357

12.5 生成式對抗網絡入門 358

12.5.1 簡要實現流程 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章 適合現實世界的最佳實踐 368

13.1 將模型性能發揮到極致 368

13.1.1 超參數優化 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 如何實現更加通用的人工智能 401

14.3.1 設定正確目標的重要性:捷徑法則 401

14.3.2 新目標 402

14.4 實現智能:缺失的內容 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 瞭解快速發展的領域的最新進展 413

14.6.1 在Kaggle 上練習解決現實世界的問題 413

14.6.2 在arXiv上瞭解最新進展 414

14.6.3 探索Keras 生態系統 414

14.7 結束語 414