TensorFlow 2 人工神經網絡學習手冊 Artificial Neural Networks with Tensorflow 2: Ann Architecture Machine Learning Projects

Poornachandra Sarang

買這商品的人也買了...

商品描述

隨著深度學習理論的不斷發展以及 TensorFlow 的廣泛應用,基於深度學習的信號分析模型在不同領域產生了深遠的影響。
本書為TensorFlow 2的使用指南,從軟件安裝、數據下載、文件管理等方面入手為初級開發者提供細緻而全面的介紹。
在此基礎上,本書系統地介紹了TensorFlow 2在人工神經網絡實戰項目中的應用,全面覆蓋了各種深度學習架構,
內容涉及:入門級的二分類模型、回歸模型等;
進階級的文本生成模型、圖像生成模型、機器翻譯模型、時序預測模型等;以及的Transformer模型等。
在每個項目中,本書完整地展示了模型設計、網絡搭建、模型訓練、
模型保存、結果預測與顯示的全過程,並提供了詳細的實現代碼。
本書將深度學習理論與實際項目結合,為初學者搭建了進入人工智能領域的學習平台,
為深度學習算法開發者提供了較為全面的應用範例,充分滿足了不同群體的學習需求。

作者簡介

周悅

北京交通大學博士,美國北卡羅來納大學教堂山分校聯合培養博士,
在圖像處理與模式識別領域有豐富的研究經驗,主要研究方向為圖像檢測、三維目標分割、圖像配準等。

 

曹旭陽

北京交通大學博士,京東集團DMT博士管培生,在計算機視覺領域具有8年算法經驗,
對機器學習算法有較深理解,主要研究方向為圖像分割、半監督學習、圖像超分等。

目錄大綱

第1章 TensorFlow快速入門 001
1.1 什麼是TensorFlow 2.0 002
1.1.1 TensorFlow 2.x平台 002
1.1.2 訓練 003
1.1.3 模型保存 005
1.1.4 部署 005
1.2 TensorFlow 2.x提供什麼 006
1.2.1 TensorFlow中的tf.keras 006
1.2.2 Eager執行 006
1.2.3 分佈式計算 007
1.2.4 TensorBoard 007
1.2.5 視覺套件(Vision Kit) 008
1.2.6 語音套件(Voice Kit) 008
1.2.7 邊緣套件(Edge TPU) 008
1.2.8 AIY套件的預訓練模型 009
1.2.9 數據管道 009
1.3 安裝 009
1.3.1 安裝步驟 009
1.3.2 Docker安裝 010
1.3.3 無安裝 010
1.4 測試 010
總結 012

第2章 深入研究TensorFlow 013
2.1 一個簡單的機器學習應用程序 013
2.1.1 創建Colab筆記本 014
2.1.2 導入 015
2.1.3 創建數據 016
2.1.4 定義神經網絡 018
2.1.5 編譯模型 018
2.1.6 訓練網絡 018
2.1.7 檢查訓練結果 019
2.1.8 預測 021
2.1.9 完整源碼 022
2.2 使用TensorFlow解決二分類問題 024
2.2.1 創建項目 024
2.2.2 導入 024
2.2.3 掛載Google雲盤 025
2.2.4 加載數據 026
2.2.5 數據處理 027
2.2.6 定義ANN 030
2.2.7 模型訓練 032
2.2.8 完整源碼 036
總結 039

第3章 深入了解tf.keras 040
3.1 開始 040
3.2 用於模型構建的函數式API 041
3.2.1 序列化模型 041
3.2.2 模型子類 043
3.2.3 預定義層 044
3.2.4 自定義層 044
3.3 保存模型 046
3.4 卷積神經網絡 049
3.5 使用CNN做圖像分類 050
3.5.1 創建項目 051
3.5.2 圖像數據 051
3.5.3 加載數據 052
3.5.4 創建訓練、測試數據集 052
3.5.5 準備模型訓練數據 053
3.5.6 模型開發 055
3.5.7 定義模型 060
3.5.8 保存模型 073
3.5.9 預測未知圖像 073
總結 075

第4章 遷移學習 076
4.1 知識遷移 076
4.2 TensorFlow Hub 077
4.2.1 預訓練模型 078
4.2.2 模型的使用 079
4.3 ImageNet分類器 080
4.3.1 創建項目 080
4.3.2 分類器URL 080
4.3.3 創建模型 081
4.3.4 準備圖像 082
4.3.5 加載標籤映射 083
4.3.6 顯示預測結果 084
4.3.7 列出所有類別 085
4.3.8 結果討論 085
4.4 犬種分類器 085
4.4.1 項目簡介 086
4.4.2 創建項目 086
4.4.3 加載數據 086
4.4.4 設置圖像和標籤 088
4.4.5 圖像預處理 091
4.4.6 處理圖像 091
4.4.7 關聯圖像與標籤 092
4.4.8 創建數據批次 093
4.4.9 顯示圖像函數 094
4.4.10 選擇預訓練模型 095
4.4.11 定義模型 095
4.4.12 創建數據集 097
4.4.13 設置TensorBoard 099
4.4.14 訓練模型 100
4.4.15 訓練日誌 100
4.4.16 驗證模型性能 101
4.4.17 預測測試圖像 101
4.4.18 可視化測試結果 103
4.4.19 預測未知圖像 105
4.4.20 使用小數據集訓練 106
4.4.21 保存、加載模型 107
4.5 提交你的工作 108
4.6 進一步工作 108
總結 109

第5章 使用神經網絡處理回歸問題 110
5.1 回歸 110
5.1.1 定義 110
5.1.2 應用 111
5.1.3 回歸問題 111
5.1.4 回歸問題的類型 111
5.2 神經網絡中的回歸問題 112
5.2.1 創建項目 112
5.2.2 提取特徵和標籤 113
5.2.3 定義、訓練模型 113
5.2.4 預測 114
5.3 分析葡萄酒質量 114
5.3.1 創建項目 114
5.3.2 數據準備 114
5.3.3 下載數據 115
5.3.4 準備數據集 115
5.3.5 創建數據集 115
5.3.6 數據歸一化 116
5.3.7 創建模型 119
5.3.8 可視化評價函數 119
5.3.9 小模型 120
5.3.10 中模型 122
5.3.11 大模型 124
5.3.12 解決過擬合 126
5.3.13 結果討論 129
5.4 損失函數 130
5.4.1 均方誤差 130
5.4.2 平均誤差 131
5.4.3 Huber損失 131
5.4.4 Log Cosh損失 131
5.4.5 分位數損失 131
5.5 優化器 132
總結 132

第6章 Estimators(估算器) 134
6.1 Estimators概述 134
6.1.1 API接口 135
6.1.2 Estimators的優點 135
6.1.3 Estimators的類型 136
6.1.4 基於Estimators的項目開發流程 137
6.2 設置Estimators 139
6.3 用於分類的DNN分類器 139
6.3.1 加載數據 140
6.3.2 準備數據 140
6.3.3 Estimators輸入函數 141
6.3.4 創建Estimators實例 142
6.3.5 模型訓練 142
6.3.6 模型評價 143
6.3.7 預測未知數據 144
6.3.8 實驗不同的ANN結構 144
6.3.9 項目源碼 145
6.4 用於回歸的LinearRegressor 147
6.4.1 項目描述 147
6.4.2 創建項目 147
6.4.3 加載數據 148
6.4.4 特徵選擇 148
6.4.5 數據清洗 149
6.4.6 創建數據集 151
6.4.7 建立特徵列 152
6.4.8 定義輸入函數 154
6.4.9 創建Estimators實例對象 154
6.4.10 模型訓練 155
6.4.11 模型評估 155
6.4.12 項目源碼 156
6.5 自定義Estimators 158
6.5.1 創建項目 159
6.5.2 加載數據 159
6.5.3 創建數據集 159
6.5.4 定義模型 159
6.5.5 定義輸入函數 160
6.5.6 將模型轉換為Estimator 160
6.5.7 模型訓練 161
6.5.8 模型評價 161
6.5.9 項目源碼 161
6.6 為預訓練模型定義Estimators 163
6.6.1 創建項目 163
6.6.2 導入VGG16 163
6.6.3 創建自定義模型 163
6.6.4 編譯模型 165
6.6.5 創建Estimator 165
6.6.6 處理數據 165
6.6.7 訓練、評價 166
6.6.8 項目源碼 166
總結 167

第7章 文本生成 169
7.1 循環神經網絡 170
7.1.1 樸素RNN 170
7.1.2 梯度消失和梯度爆炸 171
7.1.3 LSTM(一個特例) 171
7.2 文本生成 174
7.2.1 模型訓練 174
7.2.2 預測 175
7.2.3 模型定義 176
7.3 生成新生兒名字 176
7.3.1 創建項目 176
7.3.2 下載文本 177
7.3.3 處理文本 177
7.3.4 定義模型 180
7.3.5 編譯 181
7.3.6 創建checkpoints 182
7.3.7 訓練 182
7.3.8 預測 182
7.3.9 項目源碼-TextGeneration BabyNames 184
7.3.10 保存、重用模型 188
7.4 高級文本生成 188
7.4.1 創建項目 189
7.4.2 加載文本 189
7.4.3 處理數據 190
7.4.4 定義模型 191
7.4.5 創建checkpoints 191
7.4.6 自定義回調類 192
7.4.7 模型訓練 193
7.4.8 結果 193
7.4.9 斷點續訓練 194
7.4.10 過程觀察 195
7.4.11 項目源碼 196
7.5 進一步工作 199
總結 199

第8章 語言翻譯 200
8.1 sequence-to-sequence 模型 200
8.1.1 編碼器、解碼器 201
8.1.2 Seq2seq模型的缺點 203
8.2 注意力模型 203
8.3 英語翻譯為西班牙語 204
8.3.1 創建項目 204
8.3.2 下載數據集 205
8.3.3 創建數據集 205
8.3.4 數據預處理 207
8.3.5 GloVe詞嵌入 212
8.3.6 定義編碼器 214
8.3.7 定義解碼器 215
8.3.8 注意力網絡 216
8.3.9 定義模型 221
8.3.10 模型訓練 222
8.3.11 預測 222
8.3.12 項目源碼 229
總結 237

第9章 自然語言理解 238
9.1 Transformer簡介 238
9.2 Transformer詳解 239
9.2.1 下載原始數據 240
9.2.2 創建數據集 240
9.2.3 數據預處理 240
9.2.4 構建語料庫 240
9.2.5 準備訓練集數據 243
9.2.6 Transformer模型 244
9.2.7 多頭注意力(機制) 245
9.2.8 Scaled Dot-Product 注意力模塊 248
9.2.9 編碼器結構 249
9.2.10 編碼器 252
9.2.11 解碼器結構 254
9.2.12 定義解碼器 257
9.2.13 Transformer模型 259
9.2.14 創建訓練模型 261
9.2.15 損失函數 261
9.2.16 優化器 262
9.2.17 編譯 262
9.2.18 訓練 262
9.2.19 預測 263
9.2.20 測試 263
9.2.21 項目源碼 264
9.3 下一步是什麼 276
總結 276

第10章 圖像描述 278
10.1 項目簡介 280
10.2 創建項目 280
10.3 下載數據 280
10.4 解析Token文件 282
10.4.1 加載數據 282
10.4.2 創建列表 283
10.5 加載InceptionV3模型 284
10.6 準備數據集 285
10.7 提取特徵 285
10.8 創建詞彙表 286
10.9 創建輸入序列 286
10.10 創建訓練數據集 287
10.11 創建模型 288
10.12 創建編碼器 288
10.13 創建解碼器 288
10.13.1 Bahdanau注意力機制 289
10.13.2 解碼器功能 289
10.13.3 解碼器初始化 289
10.13.4 解碼器調用方法 290
10.13.5 注意力得分 290
10.13.6 注意力權重 290
10.13.7 上下文向量 291
10.13.8 解碼器實現 291
10.14 編碼器、解碼器實例化 294
10.15 定義優化器和損失函數 294
10.16 創建checkpoints 296
10.17 訓練函數 297
10.18 模型訓練 298
10.19 模型預測 298
10.20 項目源碼 301
總結 310

第11章 時間序列預測 311
11.1 時間序列預測簡介 311
11.1.1 什麼是時間序列預測 311
11.1.2 預測中的問題 312
11.1.3 時間序列組成 312
11.1.4 單變量與多變量 312
11.2 單變量時間序列分析 313
11.2.1 創建項目 313
11.2.2 準備數據 313
11.2.3 創建訓練集和測試集 316
11.2.4 創建輸入張量 319
11.2.5 構建模型 320
11.2.6 編譯和訓練 320
11.2.7 評估 320
11.2.8 預測下一個數據點 322
11.2.9 預測數據點區間 323
11.2.10 項目源碼 325
11.3 多變量時間序列分析 330
11.3.1 創建項目 330
11.3.2 準備數據 331
11.3.3 檢查平穩性 331
11.3.4 探索數據 332
11.3.5 準備數據 333
11.3.6 創建模型 335
11.3.7 訓練 335
11.3.8 評估 335
11.3.9 預測未來點 336
11.3.10 預測數據點區間 337
11.3.11 項目源碼 339
總結 343

第12章 風格遷移 344
12.1 快速風格遷移 345
12.1.1 創建項目 345
12.1.2 下載圖像 345
12.1.3 準備模型輸入圖像 347
12.1.4 執行風格遷移 348
12.1.5 顯示輸出 348
12.1.6 更多結果 348
12.1.7 項目源碼 350
12.2 自定義風格遷移 351
12.2.1 VGG16結構 352
12.2.2 創建項目 352
12.2.3 下載圖像 353
12.2.4 顯示圖像 354
12.2.5 圖像預處理 354
12.2.6 構建模型 355
12.2.7 內容損失 357
12.2.8 風格損失 357
12.2.9 全變分損失 357
12.2.10 計算內容和風格損失 358
12.2.11 Evaluator類 359
12.2.12 生成輸出圖像 359
12.2.13 顯示圖像 360
12.2.14 項目源碼 361
總結 365

第13章 圖像生成 366
13.1 GAN(生成對抗網絡) 366
13.2 GAN如何工作 366
13.3 生成器 367
13.4 判別器 367
13.5 數學公式 368
13.6 數字生成 369
13.6.1 創建項目 369
13.6.2 加載數據集 369
13.6.3 準備數據集 370
13.6.4 定義生成器模型 370
13.6.5 測試生成器 372
13.6.6 定義判別器模型 373
13.6.7 測試判別器 374
13.6.8 定義損失函數 375
13.6.9 定義新訓練函數 376
13.6.10 項目源碼 380
13.7 字母生成 385
13.7.1 下載數據 385
13.7.2 創建單字母數據集 385
13.7.3 輸出結果 386
13.7.4 項目源碼 387
13.8 印刷體到手寫體 392
13.9 生成彩色卡通圖像 392
13.9.1 下載數據集 392
13.9.2 創建數據集 392
13.9.3 顯示圖像 393
13.9.4 輸出結果 394
13.9.5 項目源碼 394
總結 400

第14章 圖像轉換 401
14.1 自動編碼器 401
14.2 色彩空間 402
14.3 網絡配置 402
14.3.1 Vanilla模型 403
14.3.2 Merged模型 403
14.3.3 使用預訓練的Merged模型 403
14.4 自動編碼器 404
14.4.1 加載數據 405
14.4.2 創建訓練、測試數據集 406
14.4.3 準備訓練數據 406
14.4.4 定義模型 407
14.4.5 模型訓練 410
14.4.6 測試 410
14.4.7 未知圖像預測 412
14.4.8 項目源碼 413
14.5 編碼器的預訓練模型 418
14.5.1 項目簡介 418
14.5.2 定義模型 418
14.5.3 提取特徵 418
14.5.4 定義網絡 419
14.5.5 模型訓練 420
14.5.6 預測 421
14.5.7 未知圖像預測 421
14.5.8 項目源碼 422
總結 426