深度學習實戰:基於TensorFlow 2和Keras(原書第2版) Deep Learning with TensorFlow 2 and Keras - Second Edition

Antonio Gulli,Amita Kapoor,Sujit Pal 劉尚峰 劉冰 譯

相關主題

商品描述

本書簡潔且全面地介紹了現代神經網絡、
人工智能和深度學習技術,專門為軟件工程師和數據科學家設計。
1章逐步介紹神經網絡的基礎知識。
2章比較TensorFlow 1.和TensorFlow 2.0編程模型。
3章重點介紹回歸。
4章介紹卷積神經網絡及其在圖像處理中的應用。
5章討論了CNN在圖像、視頻、音頻和文本處理方面的應用。
6章重點介紹生成對抗網絡。
7章介紹詞嵌入。
8章介紹基本嵌入方法的各種擴展。
9章介紹自動編碼器。
10章深入研究無監督學習模型。
11章重點介紹強化學習。
12章介紹AutoML。
13章介紹用於移動設備和物聯網的TensorFlow的基礎知識。
14章討論了雲環境以及如何利用它來訓練和部署模型。
15章討論了深度學習背後的數學。
16章介紹TPU。
本書內容豐富,易於理解,示例具有代表性,是學習深度學習的指南。

作者簡介

安東尼奧·古利(Antonio Gulli)熱衷於培養和管理世界級科技人才。
他在雲計算、深度學習和搜索引擎方面有很深的造詣。
目前,他任職於Google Cloud,擔任Engineering Director for the Office的CTO。
他曾擔任Google Warsaw Site負責人,使工程網站的規模翻了一番。
迄今為止,安東尼奧擁有在歐洲4個國家或地區的任職經歷,並在6個國家管理團隊,包括在阿姆斯特丹擔任愛思唯爾(Elsevier,世界領先的科技及醫學出版公司)副總裁,在倫敦先後擔任微軟倫敦辦公室Bing搜索引擎負責人和Ask.com公司的CTO,也曾合資創業,創辦的公司包括歐洲首批網頁搜索引擎公司之一。
安東尼奧與他人共同發明了很多有關搜索引擎、智能電源、環境科學和人工智能的新技術,已發布或申請了20多項專利。
同時,他出版了多部有關編碼和機器學習的書籍,並被譯為日文和中文。另外,他精通西班牙語、英語和意大利語,現在正在學習波蘭語和法語。他還是一位自豪的父親,有兩個兒子和一個女兒。


阿米塔·卡普爾(Amita Kapoor)是德里大學SRCASW(一個學院)的電子系副教授,在過去的20年中,她一直在講授神經網絡和人工智能課程。她熱衷於寫代碼和教學,並享受解決有挑戰性難題的過程,曾獲得2008年DAAD Sandwich計劃的獎學金與2008年光電子國際會議的最佳報告獎。
她還是一名熱心的讀者和學者,與他人合著了多本有關深度學習的書籍,並在國際期刊和會議上發表了50多篇文章。
她目前的研究領域主要包括機器學習、深度強化學習、量子計算機和機器人。


蘇吉特·帕爾(Sujit Pal)是Reed-Elsevier集團的愛思唯爾實驗室的技術研究總監,他的研究領域包括語義搜索、自然語言處理、機器學習和深度學習。
在愛思唯爾,他參與了多個機器學習項目,包括大型圖像和文本語料庫,還有其他有關推薦系統和知識圖譜開發的項目。
他還與安東尼奧·古利合著了另一本有關深度學習的書,並在他的博客Salmon Run上發表了許多技術文章。

目錄大綱

前言
作者簡介
審校者簡介
第1章 基於TensorFlow 2.0的神經網絡基礎1
1.1 TensorFlow是什麼1
1.2 Keras是什麼3
1.3 TensorFlow 2.0有哪些重要的改動3
1.4 神經網絡概述4
1.5 感知器5
1.6 多層感知器—第一個神經網絡示例6
1.6.1 感知器訓練的問題及對策6
1.6.2 激活函數—sigmoid函數7
1.6.3 激活函數—tanh函數7
1.6.4 激活函數—ReLU函數8
1.6.5 兩個拓展激活函數—ELU函數和LeakyReLU函數8
1.6.6 激活函數總結9
1.6.7 神經網絡到底是什麼9
1.7 示例—識別手寫數字10
1.7.1 獨熱編碼10
1.7.2 在TensorFlow 2.0中定義一個簡單的神經網絡10
1.7.3 運行一個簡單的TensorFlow 2.0神經網絡並建立測試基線14
1.7.4 使用隱藏層改進TensorFlow 2.0的簡單神經網絡15
1.7.5 利用隨機失活進一步改進Ten-sor Flow 2.0的簡單神經網絡18
1.7.6 測試TensorFlow 2.0的不同優化器19
1.7.7 增加epoch數24
1.7.8 控制優化器學習率25
1.7.9 增加內部隱藏神經元的數量25
1.7.10 增加批量計算的大小26
1.7.11 手寫圖識別實驗總結26
1.8 正則化27
1.8.1 採用正則化以避免過擬合27
1.8.2 理解批量歸一化28
1.9 Google Colab—CPU、GPU和TPU29
1.10 情感分析31
1.11 超參數調諧和AutoML33
1.12 預測輸出34
1.13 反向傳播的實用概述34
1.14 我們學到了什麼35
1.15 邁向深度學習方式35
1.16 參考文獻36

第2章 TensorFlow 1.x與2.x37
2.1 理解TensorFlow 1.x37
2.1.1 TensorFlow 1.x計算圖程序結構37
2.1.2 常量、變量和占位符的使用39
2.1.3 操作對象示例40
2.1.4 TensorFlow 2.x中的TensorFlow 1.x示例43
2.2 理解TensorFlow 2.x44
2.2.1 即刻執行44
2.2.2 AutoGraph45
2.2.3 Keras API的三種編程模型47
2.2.4 回調49
2.2.5 保存模型和權重50
2.2.6 使用tf.data.datasets訓練50
2.2.7 tf.keras還是估算器53
2.2.8 不規則張量55
2.2.9 自定義訓練55
2.2.10 TensorFlow 2.x中的分佈式訓練56
2.2.11 命名空間的改動59
2.2.12 1.x至2.x的轉換59
2.2.13 高效使用TensorFlow 2.x59
2.3 TensorFlow 2.x生態系統60
2.4 Keras還是tf.keras61
2.5 小結62

第3章 回歸64
3.1 什麼是回歸64
3.2 使用線性回歸進行預測65
3.2.1 簡單線性回歸65
3.2.2 多線性回歸68
3.2.3 多元線性回歸68
3.3 TensorFlow Estimator69
3.3.1 特徵列69
3.3.2 輸入函數70
3.3.3 使用TensorFlow EstimatorAPI的MNIST70
3.4 使用線性回歸預測房價71
3.5 分類任務和決策邊界75
3.5.1 logistic回歸75
3.5.2 MNIST數據集上的logistic回歸76
3.6 小結80
3.7 參考文獻80

第4章 卷積神經網絡81
4.1 深度卷積神經網絡81
4.1.1 局部感受野82
4.1.2 共享權重和偏差82
4.1.3 數學示例83
4.1.4 TensorFlow 2.x中的ConvNets83
4.1.5 池化層84
4.2 DCNN的示例—LeNet85
4.2.1 TensorFlow 2.0中的LeNet代碼85
4.2.2 理解深度學習的力量90
4.3 通過深度學習識別CIFAR-10圖像91
4.3.1 用更深的網絡提高CIFAR-10的性能93
4.3.2 用數據增強提高CIFAR-10的性能95
4.3.3 基於CIFAR-10預測97
4.4 用於大規模圖像識別的超深度卷積網絡98
4.4.1 基於VGG16神經網絡識別貓100
4.4.2 使用tf.keras內置的VGG16 Net模塊101
4.4.3 復用預建深度學習模型以提取特徵102
4.5 小結103
4.6 參考文獻103

第5章 高級卷積神經網絡104
5.1 計算機視覺104
5.1.1 複雜任務的CNN組合104
5.1.2 用tf.keras-estimator模型對Fashion-MNIST分類111
5.1.3 在GPU上運行Fashion-MNISTtf.keras-estimator模型113
5.1.4 用於遷移學習的Deep Inception-v3 Net114
5.1.5 遷移學習:分類人和馬117
5.1.6 基於tf.keras和TensorFlow Hub的Application Zoo120
5.1.7 其他CNN架構121
5.1.8 回答有關圖像的問題124
5.1.9 風格遷移127
5.1.10 創建DeepDream網絡129
5.1.11 查看深度網絡學到的內容132
5.2 視頻133
5.3 文本文件134
5.4 音頻和音樂137
5.5 卷積運算小結141
5.5.1 基本卷積神經網絡141
5.5.2 空洞卷積141
5.5.3 可分離卷積141
5.5.4 深度卷積142
5.5.5 深度可分離卷積142
5.6 膠囊網絡142
5.6.1 CNN有什麼問題142
5.6.2 Capsule網絡有什麼新功能143
5.7 小結144
5.8 參考文獻144

第6章 生成對抗網絡146
6.1 什麼是GAN146
6.2 深度卷積GAN152
6.3 一些有趣的GAN架構161
6.3.1 SRGAN161
6.3.2 CycleGAN162
6.3.3 InfoGAN164
6.4 GAN的出色應用165
6.5 TensorFlow 2.0中的CycleGAN168
6.6 小結177
6.7 參考文獻177

第7章 詞嵌入178
7.1 詞嵌入的起源和基本原理178
7.2 分佈式表示179
7.3 靜態嵌入180
7.3.1 Word2Vec181
7.3.2 GloVe183
7.4 使用gensim創建自己的嵌入184
7.5 使用gensim探索嵌入空間185
7.6 使用詞嵌入檢測垃圾短信188
7.6.1 獲取數據188
7.6.2 準備待用數據189
7.6.3 構建嵌入矩陣190
7.6.4 定義垃圾短信分類器192
7.6.5 訓練和評估模型193
7.6.6 運行垃圾短信檢測器194
7.7 神經嵌入—不只是單詞195
7.7.1 Item2Vec195
7.7.2 node2vec196
7.8 字符和子詞嵌入201
7.9 動態嵌入201
7.10 句子和段落嵌入203
7.11 基於語言模型的嵌入205
7.11.1 使用BERT作為特徵提取器207
7.11.2 微調BERT208
7.11.3 基於BERT命令行的分類209
7.11.4 把BERT作為自己網絡的一部分210
7.12 小結213
7.13 參考文獻214

第8章 循環神經網絡217
8.1 基本的RNN單元218
8.1.1 時間反向傳播219
8.1.2 梯度消失和梯度爆炸221
8.2 RNN單元變體221
8.2.1 長短期記憶網絡221
8.2.2 門控循環單元223
8.2.3 peephole LSTM223
8.3 RNN變體224
8.3.1 雙向RNN224
8.3.2 有狀態RNN224
8.4 RNN拓撲結構225
8.4.1 一對多—學習生成文本226
8.4.2 多對一—情感分析232
8.4.3 多對多—POS標記238
8.5 編碼器-解碼器架構—seq2seq245
8.6 注意力機制255
8.7 Transformer架構261
8.8 小結264
8.9 參考文獻265

第9章 自編碼器267
9.1 自編碼器簡介267
9.2 香草自編碼器269
9.2.1 TensorFlow Keras層—定義自定義層269
9.2.2 使用自編碼器重構手寫數字271
9.3 稀疏自編碼器274
9.4 降噪自編碼器276
9.5 堆棧自編碼器279
9.5.1 用於去除圖像噪聲的捲積自編碼器279
9.5.2 Keras自編碼器示例—句子向量283
9.6 小結290
9.7 參考文獻290

第10章 無監督學習292
10.1 主成分分析292
10.1.1 MNIST數據集上的PCA293
10.1.2 TensorFlow嵌入式API295
10.1.3 k-均值聚類296
10.1.4 TensorFlow 2.0中的k-均值297
10.1.5 k-均值的變體299
10.2 自組織圖300
10.3 受限玻爾茲曼機306
10.3.1 使用RBM重建圖像307
10.3.2 深度信念網絡310
10.4 變分自編碼器311
10.5 小結316
10.6 參考文獻316

第11章 強化學習318
11.1 概述318
11.1.1 強化學習術語319
11.1.2 深度強化學習算法321
11.1.3 強化學習的成功案例324
11.2 OpenAI Gym概述324
11.3 深度Q網絡328
11.3.1 CartPole的深度Q網絡329
11.3.2 深度Q網絡玩Atari遊戲333
11.3.3 DQN變體336
11.4 深度確定性策略梯度339
11.5 小結340
11.6 參考文獻340

第12章 TensorFlow和雲服務342
12.1 雲端深度學習342
12.1.1 微軟Azure343
12.1.2 AWS344
12.1.3 谷歌云平台346
12.1.4 IBM雲347
12.2 雲端虛擬機348
12.2.1 亞馬遜上的EC2348
12.2.2 谷歌云平台上的計算實例349
12.2.3 微軟Azure上的虛擬機350
12.3 雲端的Jupyter Notebook351
12.3.1 SageMaker351
12.3.2 Google Colaboratory351
12.3.3 微軟Azure Notebook353
12.4 用於生產的TensorFlow Extended354
12.4.1 TFX管道354
12.4.2 TFX管道組件355
12.4.3 TFX庫356
12.5 TensorFlow企業版357
12.6 小結357
12.7 參考文獻357

第13章 用於移動設備和物聯網的TensorFlow以及Tensor-Flow.js359
13.1 TensorFlow Mobile359
13.2 TensorFlow Lite359
13.2.1 量化360
13.2.2 FlatBuffer360
13.2.3 Mobile轉換器361
13.2.4 移動優化解析器361
13.2.5 支持平台361
13.2.6 架構361
13.2.7 使用TensorFlow Lite362
13.2.8 應用程序的一個通用示例362
13.2.9 使用GPU和加速器363
13.2.10 應用程序示例363
13.3 TensorFlow Lite中的預訓練模型365
13.3.1 圖片分類366
13.3.2 物體檢測367
13.3.3 姿勢估計367
13.3.4 智能回复367
13.3.5 分割367
13.3.6 風格遷移367
13.3.7 文本分類367
13.3.8 問答368
13.3.9 使用移動GPU的注意事項368
13.4 邊緣聯合學習概述369
13.5 TensorFlow.js372
13.5.1 普通TensorFlow.js372
13.5.2 模型轉換378
13.5.3 預訓練模型378
13.5.4 Node.js379
13.6 小結380
13.7 參考文獻380

第14章 AutoML簡介382
14.1 什麼是AutoML382
14.2 實現AutoML383
14.3 自動數據準備383
14.4 自動特徵工程384
14.5 自動模型生成384
14.6 AutoKeras386
14.7 Google Cloud AutoML387
14.7.1 使用Cloud AutoML—Tables解決方案387
14.7.2 使用Cloud AutoML—Vision解決方案397
14.7.3 使用Cloud AutoML— Text Classfication解決方案405
14.7.4 使用Cloud AutoML—Translation解決方案408
14.7.5 使用Cloud AutoML—Video Intelligence Classifi-cation解決方案413
14.7.6 費用419
14.8 將Google AutoML集成到Kaggle419
14.9 小結420
14.10 參考文獻420

第15章 深度學習相關的數學知識422
15.1 歷史422
15.2 數學工具422
15.2.1 隨處可見的導數和梯度423
15.2.2 梯度下降424
15.2.3 鍊式法則424
15.2.4 一些微分規則425
15.2.5 矩陣運算425
15.3 激活函數425
15.3.1 sigmoid函數的導數426
15.3.2 tanh函數的導數426
15.3.3 ReLU函數的導數427
15.4 反向傳播427
15.4.1 前向步驟429
15.4.2 反向步驟429
15.4.3 反向傳播的局限性434
15.4.4 交叉熵及其導數435
15.4.5 批量梯度下降、隨機梯度下降和小批量436
15.5 關於反向傳播和卷積的思考437
15.6 關於反向傳播和RNN的思考438
15.7 關於TensorFlow和自動區分的說明440
15.8 小結440
15.9 參考文獻441

第16章 張量處理單元442
16.1 CPU、GPU與TPU442
16.1.1 CPU和GPU442
16.1.2 TPU443
16.2 三代TPU和邊緣TPU444
16.2.1 第一代TPU444
16.2.2 第二代TPU447
16.2.3 第三代TPU447
16.2.4 邊緣TPU448
16.3 TPU性能448
16.4 如何在Colab中使用TPU449
16.4.1 檢查TPU是否可用450
16.4.2 用tf.data加載數據450
16.4.3 建立模型並將其加載到TPU中451
16.5 使用預訓練的TPU模型453
16.6 使用TensorFlow 2.1和夜間版455
16.7 小結456
16.8 參考文獻457