簡明的 TensorFlow 2 (全彩印刷)
內容描述
本書圍繞 TensorFlow 2 的概念和功能展開介紹,旨在以“即時執行”視角幫助讀者快速入門 TensorFlow。
本書共分5篇:
基礎篇首先介紹了 TensorFlow的安裝配置和基本概念,然後以深度學習中常用的捲積神經網絡、
循環神經網絡等網絡結構為例,介紹了使用 TensorFlow建立和訓練模型的方式,
最後介紹了 TensorFlow中常用模塊的使用方法;部署篇介紹了在服務器、
嵌入式設備和瀏覽器等平臺部署 TensorFlow模型的方法;
大規模訓練篇介紹了在 TensorFlow中進行分佈式訓練和使用 TPU 訓練的方法;
擴展篇介紹了多種 TensorFlow 生態系統內的常用及前沿工具;
高級篇則為進階開發者介紹了 TensorFlow程序開發的更多深入細節及技巧。
目錄大綱
目 錄
第0 章 TensorFlow 概述 1
基 礎 篇
目 錄
第0 章 TensorFlow 概述 1
基 礎 篇
第 1 章 TensorFlow 的安裝與環境配置 4
1.1 一般安裝步驟 4
1.2 GPU 版本 TensorFlow 安裝指南 6
1.2.1 GPU 硬件的準備 6
1.2.2 NVIDIA 驅動程序的安裝 6
1.2.3 CUDA Toolkit 和 cuDNN 的安裝 8
1.3 第 一個程序 8
1.4 IDE 設置 9
1.5 TensorFlow 所需的硬件配置 10
第 2 章 TensorFlow 基礎 12
2.1 TensorFlow 1+1 12
2.2 自動求導機制 14
2.3 基礎示例:線性回歸 15
2.3.1 NumPy 下的線性回歸 16
2.3.2 TensorFlow 下的線性回歸 17
第 3 章 TensorFlow 模型建立與訓練 19
3.1 模型與層 19
3.2 基礎示例:多層感知器(MLP) 22
3.2.1 數據獲取及預處理:tf.keras.datasets 23
3.2.2 模型的構建:tf.keras.Model 和 tf.keras.layers 24
3.2.3 模型的訓練:tf.keras.losses 和 tf.keras.optimizer 25
3.2.4 模型的評估:tf.keras.metrics 26
3.3 捲積神經網絡(CNN) 28
3.3.1 使用 Keras 實現捲積神經網絡 29
3.3.2 使用 Keras 中預定義的經典捲積神經網絡結構 30
3.4 循環神經網絡(RNN) 35
3.5 深度強化學習(DRL) 40
3.6 Keras Pipeline 43
3.6.1 Keras Sequential/Functional API 模式建立模 44
3.6.2 使用 Keras Model 的 compile、fit 和 evaluate 方法訓練和評估模型 44
3.7 自定義層、損失函數和評估指標 45
3.7.1 自定義層 45
3.7.2 自定義損失函數和評估指標 46
第 4 章 TensorFlow 常用模塊 48
4.1 tf.train.Checkpoint:變量的保存與恢復 48
4.2 TensorBoard:訓練過程可視化 52
4.2.1 實時查看參數變化情況 52
4.2.2 查看 Graph 和 Profile 信息 53
4.2.3 實例:查看多層感知器模型的訓練情況 55
4.3 tf.data:數據集的構建與預處理 55
4.3.1 數據集對象的建立 55
4.3.2 數據集對象的預處理 57
4.3.3 使用 tf.data 的並行化策略提高訓練流程效率 60
4.3.4 數據集元素的獲取與使用 61
4.3.5 實例:cats_vs_dogs 圖像分類 62
4.4 TFRecord:TensorFlow 數據集存儲格式 64
4.4.1 將數據集存儲為 TFRecord 文件 65
4.4.2 讀取 TFRecord 文件 66
4.5 @tf.function:圖執行模式 68
4.5.1 @tf.function 基礎使用方法 68
4.5.2 @tf.function 內在機制 69
4.5.3 AutoGraph:將 Python 控制流轉換為 TensorFlow 計算圖 72
4.5.4 使用傳統的 tf.Session 73
4.6 tf.TensorArray:TensorFlow 動態數組 74
4.7 tf.config:GPU 的使用與分配 75
4.7.1 指定當前程序使用的 GPU 75
4.7.2 設置顯存使用策略 76
4.7.3 單 GPU 模擬多 GPU 環境 77
部 署 篇
第 5 章 TensorFlow 模型導出 80
5.1 使用 SavedModel 完整導出模型 80
5.2 Keras 自有的模型導出格式 82
第 6 章 TensorFlow Serving 84
6.1 TensorFlow Serving 安裝 84
6.2 TensorFlow Serving 模型部署 85
6.2.1 Keras Sequential 模式模型的部署 86
6.2.2 自定義 Keras 模型的部署 86
6.3 在客戶端調用以 TensorFlow Serving 部署的模型 87
6.3.1 Python 客戶端示例 87
6.3.2 Node.js 客戶端示例(Ziyang) 88
第 7 章 TensorFlow Lite 91
7.1 模型轉換 91
7.2 Android 部署 92
7.3 Quantized 模型轉換 96
7.4 總結 100
第 8 章 TensorFlow.js 101
8.1 TensorFlow.js 環境配置 102
8.1.1 在瀏覽器中使用 TensorFlow.js 102
8.1.2 在 Node.js 中使用 TensorFlow.js 103
8.1.3 在微信小程序中使用 TensorFlow.js 104
8.2 ensorFlow.js 模型部署 105
8.2.1 在瀏覽器中加載 Python 模型 105
8.2.2 在 Node.js 中執行原生 SavedModel 模型 106
8.2.3 使用 TensorFlow.js 模型庫 107
8.2.4 在瀏覽器中使用 MobileNet 進行攝像頭物體識別 107
8.3 TensorFlow.js 模型訓練與性能對比 110
大規模訓練篇
第 9 章 TensorFlow 分佈式訓練 116
9.1 單機多卡訓練:MirroredStrategy 116
9.2 多機訓練:MultiWorkerMirrored-Strategy 118
第 10 章 使用 TPU 訓練 TensorFlow 模型 120
10.1 TPU 簡介 120
10.2 TPU 環境配置 122
10.3 TPU 基本用法 123
擴 展 篇
第 11 章 TensorFlow Hub 模型復用 126
11.1 TF Hub 網站 126
11.2 TF Hub 安裝與復用 127
11.3 TF Hub 模型二次訓練樣例 130
第 12 章 TensorFlow Datasets 數據集載入 131
第 13 章 Swift for TensorFlow 133
13.1 S4TF 環境配置 133
13.2 S4TF 基礎使用 134
13.2.1 在 Swift 中使用標準的 TensorFlow API 135
13.2.2 在 Swift 中直接加載 Python 語言庫 136
13.2.3 語言原生支持自動微分 136
13.2.4 MNIST 數字分類 137
第 14 章 TensorFlow Quantum: 混合量子 - 經典機器學習 140
14.1 量子計算基本概念 141
14.1.1 量子位 141
14.1.2 量子邏輯門 142
14.1.3 量子線路 143
14.1.4 實例:使用 Cirq 建立簡單的量子線路 144
14.2 混合量子 - 經典機器學習 144
14.2.1 量子數據集與帶參數的量子門 145
14.2.2 參數化的量子線路(PQC) 146
14.2.3 將參數化的量子線路嵌入機器學習模型 146
14.2.4 實例:對量子數據集進行二分類 147
高 級 篇
第 15 章 圖執行模式下的 TensorFlow 2 150
15.1 TensorFlow 1+1 150
15.1.1 使用計算圖進行基本運算 150
15.1.2 計算圖中的占位符與數據輸入 152
15.1.3 計算圖中的變量 153
15.2 自動求導機制與優化器 156
15.2.1 自動求導機制 156
15.2.2 優化器 157
15.2.3 自動求導機制的計算圖對比 158
15.3 基礎示例:線性回歸 161
15.3.1 自動求導機制 162
15.3.2 優化器 162
第 16 章 tf.GradientTape 詳解 164
16.1 基本使用 164
16.2 監視機制 165
16.3 高階求導 166
16.4 持久保持記錄與多次求導 166
16.5 圖執行模式 167
16.6 性能優化 167
16.7 實例:對神經網絡的各層變量獨立求導 167
第 17 章 TensorFlow 性能優化 169
17.1 關於計算性能的若乾重要事實 169
17.2 模型開發:擁抱張量運算 170
17.3 模型訓練:數據預處理和預載入 171
17.4 模型類型與加速潛力的關系 171
17.5 使用針對特定 CPU 指令集優化的 TensorFlow 172
17.6 性能優化策略 172
第 18 章 Android 端側 Arbitrary Style Transfer 模型部署 173
18.1 Arbitrary Style Transfer 模型解析 174
18.1.1 輸入輸出 174
18.1.2 bottleneck 數組 174
18.2 Arbitrary Style Transfer 模型部署 175
18.2.1 gradle 設置 175
18.2.2 style predict 模型部署 175
18.2.3 transform 模型部署 178
18.2.4 效果 180
18.3 總結 182
附錄 A 強化學習簡介 183
附錄 B 使用 Docker 部署 TensorFlow 環境 197
附錄 C 在雲端使用 TensorFlow 200
附錄 D 部署自己的交互式 Python 開發環境 JupyterLab 211
附錄 E 參考資料與推薦閱讀 214
附錄 F 術語中英對照 216
第 1 章 TensorFlow 的安裝與環境配置 4
1.1 一般安裝步驟 4
1.2 GPU 版本 TensorFlow 安裝指南 6
1.2.1 GPU 硬件的準備 6
1.2.2 NVIDIA 驅動程序的安裝 6
1.2.3 CUDA Toolkit 和 cuDNN 的安裝 8
1.3 第 一個程序 8
1.4 IDE 設置 9
1.5 TensorFlow 所需的硬件配置 10
第 2 章 TensorFlow 基礎 12
2.1 TensorFlow 1+1 12
2.2 自動求導機制 14
2.3 基礎示例:線性回歸 15
2.3.1 NumPy 下的線性回歸 16
2.3.2 TensorFlow 下的線性回歸 17
第 3 章 TensorFlow 模型建立與訓練 19
3.1 模型與層 19
3.2 基礎示例:多層感知器(MLP) 22
3.2.1 數據獲取及預處理:tf.keras.datasets 23
3.2.2 模型的構建:tf.keras.Model 和 tf.keras.layers 24
3.2.3 模型的訓練:tf.keras.losses 和 tf.keras.optimizer 25
3.2.4 模型的評估:tf.keras.metrics 26
3.3 捲積神經網絡(CNN) 28
3.3.1 使用 Keras 實現捲積神經網絡 29
3.3.2 使用 Keras 中預定義的經典捲積神經網絡結構 30
3.4 循環神經網絡(RNN) 35
3.5 深度強化學習(DRL) 40
3.6 Keras Pipeline 43
3.6.1 Keras Sequential/Functional API 模式建立模 44
3.6.2 使用 Keras Model 的 compile、fit 和 evaluate 方法訓練和評估模型 44
3.7 自定義層、損失函數和評估指標 45
3.7.1 自定義層 45
3.7.2 自定義損失函數和評估指標 46
第 4 章 TensorFlow 常用模塊 48
4.1 tf.train.Checkpoint:變量的保存與恢復 48
4.2 TensorBoard:訓練過程可視化 52
4.2.1 實時查看參數變化情況 52
4.2.2 查看 Graph 和 Profile 信息 53
4.2.3 實例:查看多層感知器模型的訓練情況 55
4.3 tf.data:數據集的構建與預處理 55
4.3.1 數據集對象的建立 55
4.3.2 數據集對象的預處理 57
4.3.3 使用 tf.data 的並行化策略提高訓練流程效率 60
4.3.4 數據集元素的獲取與使用 61
4.3.5 實例:cats_vs_dogs 圖像分類 62
4.4 TFRecord:TensorFlow 數據集存儲格式 64
4.4.1 將數據集存儲為 TFRecord 文件 65
4.4.2 讀取 TFRecord 文件 66
4.5 @tf.function:圖執行模式 68
4.5.1 @tf.function 基礎使用方法 68
4.5.2 @tf.function 內在機制 69
4.5.3 AutoGraph:將 Python 控制流轉換為 TensorFlow 計算圖 72
4.5.4 使用傳統的 tf.Session 73
4.6 tf.TensorArray:TensorFlow 動態數組 74
4.7 tf.config:GPU 的使用與分配 75
4.7.1 指定當前程序使用的 GPU 75
4.7.2 設置顯存使用策略 76
4.7.3 單 GPU 模擬多 GPU 環境 77
部 署 篇
第 5 章 TensorFlow 模型導出 80
5.1 使用 SavedModel 完整導出模型 80
5.2 Keras 自有的模型導出格式 82
第 6 章 TensorFlow Serving 84
6.1 TensorFlow Serving 安裝 84
6.2 TensorFlow Serving 模型部署 85
6.2.1 Keras Sequential 模式模型的部署 86
6.2.2 自定義 Keras 模型的部署 86
6.3 在客戶端調用以 TensorFlow Serving 部署的模型 87
6.3.1 Python 客戶端示例 87
6.3.2 Node.js 客戶端示例(Ziyang) 88
第 7 章 TensorFlow Lite 91
7.1 模型轉換 91
7.2 Android 部署 92
7.3 Quantized 模型轉換 96
7.4 總結 100
第 8 章 TensorFlow.js 101
8.1 TensorFlow.js 環境配置 102
8.1.1 在瀏覽器中使用 TensorFlow.js 102
8.1.2 在 Node.js 中使用 TensorFlow.js 103
8.1.3 在微信小程序中使用 TensorFlow.js 104
8.2 ensorFlow.js 模型部署 105
8.2.1 在瀏覽器中加載 Python 模型 105
8.2.2 在 Node.js 中執行原生 SavedModel 模型 106
8.2.3 使用 TensorFlow.js 模型庫 107
8.2.4 在瀏覽器中使用 MobileNet 進行攝像頭物體識別 107
8.3 TensorFlow.js 模型訓練與性能對比 110
大規模訓練篇
第 9 章 TensorFlow 分佈式訓練 116
9.1 單機多卡訓練:MirroredStrategy 116
9.2 多機訓練:MultiWorkerMirrored-Strategy 118
第 10 章 使用 TPU 訓練 TensorFlow 模型 120
10.1 TPU 簡介 120
10.2 TPU 環境配置 122
10.3 TPU 基本用法 123
擴 展 篇
第 11 章 TensorFlow Hub 模型復用 126
11.1 TF Hub 網站 126
11.2 TF Hub 安裝與復用 127
11.3 TF Hub 模型二次訓練樣例 130
第 12 章 TensorFlow Datasets 數據集載入 131
第 13 章 Swift for TensorFlow 133
13.1 S4TF 環境配置 133
13.2 S4TF 基礎使用 134
13.2.1 在 Swift 中使用標準的 TensorFlow API 135
13.2.2 在 Swift 中直接加載 Python 語言庫 136
13.2.3 語言原生支持自動微分 136
13.2.4 MNIST 數字分類 137
第 14 章 TensorFlow Quantum: 混合量子 - 經典機器學習 140
14.1 量子計算基本概念 141
14.1.1 量子位 141
14.1.2 量子邏輯門 142
14.1.3 量子線路 143
14.1.4 實例:使用 Cirq 建立簡單的量子線路 144
14.2 混合量子 - 經典機器學習 144
14.2.1 量子數據集與帶參數的量子門 145
14.2.2 參數化的量子線路(PQC) 146
14.2.3 將參數化的量子線路嵌入機器學習模型 146
14.2.4 實例:對量子數據集進行二分類 147
高 級 篇
第 15 章 圖執行模式下的 TensorFlow 2 150
15.1 TensorFlow 1+1 150
15.1.1 使用計算圖進行基本運算 150
15.1.2 計算圖中的占位符與數據輸入 152
15.1.3 計算圖中的變量 153
15.2 自動求導機制與優化器 156
15.2.1 自動求導機制 156
15.2.2 優化器 157
15.2.3 自動求導機制的計算圖對比 158
15.3 基礎示例:線性回歸 161
15.3.1 自動求導機制 162
15.3.2 優化器 162
第 16 章 tf.GradientTape 詳解 164
16.1 基本使用 164
16.2 監視機制 165
16.3 高階求導 166
16.4 持久保持記錄與多次求導 166
16.5 圖執行模式 167
16.6 性能優化 167
16.7 實例:對神經網絡的各層變量獨立求導 167
第 17 章 TensorFlow 性能優化 169
17.1 關於計算性能的若乾重要事實 169
17.2 模型開發:擁抱張量運算 170
17.3 模型訓練:數據預處理和預載入 171
17.4 模型類型與加速潛力的關系 171
17.5 使用針對特定 CPU 指令集優化的 TensorFlow 172
17.6 性能優化策略 172
第 18 章 Android 端側 Arbitrary Style Transfer 模型部署 173
18.1 Arbitrary Style Transfer 模型解析 174
18.1.1 輸入輸出 174
18.1.2 bottleneck 數組 174
18.2 Arbitrary Style Transfer 模型部署 175
18.2.1 gradle 設置 175
18.2.2 style predict 模型部署 175
18.2.3 transform 模型部署 178
18.2.4 效果 180
18.3 總結 182
附錄 A 強化學習簡介 183
附錄 B 使用 Docker 部署 TensorFlow 環境 197
附錄 C 在雲端使用 TensorFlow 200
附錄 D 部署自己的交互式 Python 開發環境 JupyterLab 211
附錄 E 參考資料與推薦閱讀 214
附錄 F 術語中英對照 216
作者介紹
李錫涵
谷歌開發者專家(機器學習領域),北京大學信息科學技術學院智能科學系理學碩士,
本科畢業於浙江大學竺可楨學院混合班。曾獲全國青少年信息學奧林匹克聯賽一等獎,
美國大學生數學建模競賽特等獎。曾在多智能體會議AAMAS和自然語言處理會議COLING上發表學術論文。
現研究方向為強化學習在優化領域的實際應用,即將赴倫敦大學學院攻讀計算機博士學位。
開源在線入門手冊《簡單粗暴TensorFlow 2》作者。本書封面插圖作者。
李卓桓
谷歌開發者專家(機器學習領域)。清華大學本科,中歐國際工商學院EMBA,北京郵電大學計算機博士在讀。
現任PreAngel合夥人,Plug and Play Ventures Partner,關注種子期AI創業項目。
zixia BBS、嘰歪網創始人,曾任優酷網首席科學家、水木清華BBS站長、ChinaRen系統工程師。
擁有豐富的互聯網創業投資和編程經驗,著有《Linux網絡編程》《反垃圾郵件完全手冊》
《智能問答與深度學習》《Chatbot從0到1:對話式交互設計實踐指南》等技術書。
GitHub 8000+ Star 開源項目 Wechaty 作者。
朱金鵬
華為高級軟件工程師,前谷歌開發者專家(機器學習領域),
從事Android系統和運行時設計開發9年,在Android系統、運行時、
機器學習等領域都有較深入的研究和探索。
積極參與穀歌技術社區活動並進行技術分享。
歡迎關注作者的微信公眾號deepinthinking。