《Python深度學(xué)習(xí):基于TensorFlow(第2版)》暢銷書升級,TensorFlow領(lǐng)域公認(rèn)標(biāo)準(zhǔn)著作,20余年研發(fā)經(jīng)驗AI專家撰寫,詳解TensorFlow深度學(xué)習(xí)全棧知識
定 價:99 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:吳茂貴 王冬 李濤 楊本法 張利 著
- 出版時間:2022/10/1
- ISBN:9787111712244
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:362
- 紙張:
- 版次:
- 開本:16
1.內(nèi)容選擇?:提供全棧式的解決方案
深度學(xué)習(xí)涉及范圍比較廣,既有對基礎(chǔ)、原理的要求,也有對代碼實現(xiàn)的要求。如何在較短時間內(nèi)快速提高深度學(xué)習(xí)的水平?如何盡快把所學(xué)運用到實踐中?這方面雖然沒有捷徑可言,但卻有方法可循。本書基于這些考量,希望能給你提供一站式解決方案。具體內(nèi)容包括?:機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的三大基石(線性代數(shù)、概率與信息論及數(shù)值分析)?;機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的基本理論和原理?;機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的常用開發(fā)工具(Python、TensorFlow、Keras等)?;TensorFlow的高級封裝及多個綜合性實戰(zhàn)項目等。
2.層次安排?:找準(zhǔn)易撕口,快速實現(xiàn)由點到面的突破
我們打開塑料袋時,一般從易撕口開始,這樣即使再牢固的袋子也很容易打開。面對深度學(xué)習(xí)這個“牢固袋子”,我們也可以采用類似方法,找準(zhǔn)易撕口。如果沒有,就創(chuàng)造一個易撕口,并通過這個易撕口,實現(xiàn)點到面的快速擴(kuò)展。本書在面對很多抽象、深奧的算法時均采用了這種方法。我們知道BP算法、循環(huán)神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)中的兩塊“硬骨頭”,所以我們在介紹BP算法時,先介紹單個神經(jīng)如何實現(xiàn)BP算法這個易撕口,再延伸到一般情況?;在介紹循環(huán)神經(jīng)網(wǎng)絡(luò)時,我們也先以一個簡單實例為易撕口,再延伸到一般情況。希望這種方式能幫助你把難題化易,把大事化小,把不可能轉(zhuǎn)換為可能。
3.表達(dá)形式?:讓圖說話,一張好圖勝過千言萬語
機(jī)器學(xué)習(xí)、深度學(xué)習(xí)中有很多抽象的概念、復(fù)雜的算法、深奧的理論,如NumPy的廣播機(jī)制、梯度下降對學(xué)習(xí)率敏感、神經(jīng)網(wǎng)絡(luò)中的共享參數(shù)、動量優(yōu)化法、梯度消失或爆炸等,這些內(nèi)容如果只用文字來描述,可能很難達(dá)到讓人茅塞頓開的效果,但如果用一些圖來展現(xiàn),再加上適當(dāng)?shù)奈淖终f明,往往能取得非常好的效果,正所謂一張好圖勝過千言萬語。
除了以上談到的三個方面,為了幫助大家更好地理解,更快地掌握機(jī)器學(xué)習(xí)、深度學(xué)習(xí)這些人工智能的核心內(nèi)容,本書還包含了其他方法,相信閱讀本書的讀者都能體會到。我們希望通過這些方法或方式帶給你不一樣的理解和體驗,使你感到抽象數(shù)學(xué)不抽象、深度學(xué)習(xí)不深奧、復(fù)雜算法不復(fù)雜、難學(xué)的深度學(xué)習(xí)也易學(xué),這也是我們寫這本書的主要目的。
至于人工智能(AI)的重要性,想必就不用多說了。如果說2016年前屬于擺事實論證階段,那么2016年后已進(jìn)入事實勝于雄辯階段了,而2018年后應(yīng)該擼起袖子加油干了。目前各行各業(yè)都忙于AI+,給人“忽如一夜春風(fēng)來,千樹萬樹梨花開”的感覺!
第2版前言
第1版前言
第一部分 TensorFlow基礎(chǔ)
第1章 NumPy基礎(chǔ) 2
1.1 把圖像數(shù)字化 3
1.1.1 數(shù)組屬性 4
1.1.2 從已有數(shù)據(jù)中生成數(shù)組 4
1.1.3 利用 random 模塊生成
數(shù)組 5
1.1.4 利用 arange、linspace
函數(shù)生成數(shù)組 7
1.2 存取元素 8
1.3 NumPy的算術(shù)運算 9
1.3.1 對應(yīng)元素相乘 10
1.3.2 點積運算 11
1.4 數(shù)據(jù)變形 12
1.4.1 更改數(shù)組的形狀 12
1.4.2 合并數(shù)組 15
1.5 通用函數(shù) 18
1.6 廣播機(jī)制 20
1.7 用NumPy實現(xiàn)回歸實例 21
1.8 小結(jié) 24
第2章 TensorFlow基礎(chǔ)知識 25
2.1 安裝配置 25
2.1.1 安裝Anaconda 26
2.1.2 安裝TensorFlow
CPU版 26
2.1.3 安裝TensorFlow
GPU版 27
2.2 層次架構(gòu) 29
2.3 張量 30
2.3.1 張量的基本屬性 30
2.3.2 張量切片 31
2.3.3 操作形狀 32
2.4 變量 33
2.5 NumPy與tf.Tensor比較 35
2.6 計算圖 36
2.6.1 靜態(tài)計算圖 36
2.6.2 動態(tài)計算圖 37
2.7 自動圖 38
2.8 自動微分 39
2.9 損失函數(shù) 42
2.10 優(yōu)化器 43
2.11 使用TensorFlow 2.0實現(xiàn)回歸
實例 43
2.12 GPU加速 48
2.13 小結(jié) 50
第3章 TensorFlow構(gòu)建模型的方法 51
3.1 利用低階API構(gòu)建模型 51
3.1.1 項目背景 51
3.1.2 導(dǎo)入數(shù)據(jù) 52
3.1.3 預(yù)處理數(shù)據(jù) 53
3.1.4 構(gòu)建模型 55
3.1.5 訓(xùn)練模型 56
3.1.6 測試模型 57
3.1.7 保存恢復(fù)模型 57
3.2 利用中階API構(gòu)建模型 58
3.2.1 構(gòu)建模型 58
3.2.2 創(chuàng)建損失評估函數(shù) 59
3.2.3 訓(xùn)練模型 59
3.3 利用高階API構(gòu)建模型 61
3.3.1 構(gòu)建模型 61
3.3.2 編譯及訓(xùn)練模型 63
3.3.3 測試模型 64
3.3.4 保存恢復(fù)模型 64
3.4 小結(jié) 65
第4章 TensorFlow數(shù)據(jù)處理 66
4.1 tf.data簡介 66
4.2 構(gòu)建數(shù)據(jù)集的常用方法 67
4.2.1 從內(nèi)存中讀取數(shù)據(jù) 68
4.2.2 從文本中讀取數(shù)據(jù) 68
4.2.3 讀取TFRecord格式
文件 70
4.3 如何生成自己的TFRecord格式
數(shù)據(jù) 70
4.3.1 把數(shù)據(jù)轉(zhuǎn)換為TFRecord
格式的一般步驟 70
4.3.2 加載TFRecord文件
流程 72
4.3.3 代碼實現(xiàn) 72
4.4 數(shù)據(jù)增強(qiáng)方法 75
4.4.1 常用的數(shù)據(jù)增強(qiáng)方法 75
4.4.2 創(chuàng)建數(shù)據(jù)處理流水線 77
4.5 小結(jié) 78
第5章 可視化 79
5.1 matplotlib 79
5.1.1 matplotlib的基本概念 79
5.1.2 使用matplotlib繪制
圖表 81
5.1.3 使用rcParams 83
5.2 pyecharts 85
5.2.1 pyecharts的安裝 85
5.2.2 使用pyecharts繪制
圖表 86
5.3 TensorBoard 89
5.4 小結(jié) 92
第二部分 深度學(xué)習(xí)基礎(chǔ)
第6章 機(jī)器學(xué)習(xí)基礎(chǔ) 94
6.1 機(jī)器學(xué)習(xí)的一般流程 94
6.1.1 明確目標(biāo) 94
6.1.2 收集數(shù)據(jù) 95
6.1.3 數(shù)據(jù)探索與預(yù)處理 95
6.1.4 模型選擇 96
6.1.5 模型評估 96
6.2 監(jiān)督學(xué)習(xí) 98
6.2.1 線性回歸 98
6.2.2 邏輯回歸 100
6.2.3 樹回歸 102
6.2.4 支持向量機(jī) 102
6.2.5 樸素貝葉斯分類器 105
6.2.6 集成學(xué)習(xí) 107
6.3 無監(jiān)督學(xué)習(xí) 110
6.3.1 主成分分析 110
6.3.2 k均值算法 110
6.4 數(shù)據(jù)預(yù)處理 111
6.4.1 處理缺失值 111
6.4.2 處理分類數(shù)據(jù) 112
6.5 機(jī)器學(xué)習(xí)實例 113
6.6 小結(jié) 119
第7章 神經(jīng)網(wǎng)絡(luò)基礎(chǔ) 120
7.1 單層神經(jīng)網(wǎng)絡(luò) 121
7.2 多層神經(jīng)網(wǎng)絡(luò) 122
7.2.1 多層神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu) 122
7.2.2 各層之間的信息傳輸 123
7.2.3 使用多層神經(jīng)網(wǎng)絡(luò)解決
XOR問題 123
7.2.4 使用TensorFlow解決XOR問題 125
7.3 激活函數(shù) 126
7.3.1 sigmoid函數(shù) 127
7.3.2 softmax函數(shù) 127
7.3.3 tanh函數(shù) 128
7.3.4 ReLU函數(shù) 129
7.3.5 Leaky-ReLU函數(shù) 129
7.3.6 softplus函數(shù) 130
7.3.7 Dropout函數(shù) 130
7.4 正向和反向傳播算法 130
7.4.1 單個神經(jīng)元的BP算法 131
7.4.2 多層神經(jīng)網(wǎng)絡(luò)的BP
算法 132
7.5 解決過擬合問題 135
7.5.1 權(quán)重正則化 135
7.5.2 Dropout正則化 136
7.5.3 批量正則化 138
7.5.4 權(quán)重初始化 139
7.5.5 殘差網(wǎng)絡(luò) 140
7.6 選擇優(yōu)化算法 141
7.6.1 傳統(tǒng)梯度更新算法 141
7.6.2 動量算法 142
7.6.3 NAG算法 144
7.6.4 AdaGrad算法 145
7.6.5 RMSProp算法 146
7.6.6 Adam算法 146
7.6.7 如何選擇優(yōu)化算法 147
7.7 使用tf.keras構(gòu)建神經(jīng)網(wǎng)絡(luò) 148
7.7.1 tf.keras概述 148
7.7.2 tf.keras的常用模塊 148
7.7.3 構(gòu)建模型的幾種方法 149
7.7.4 使用Sequential API
構(gòu)建神經(jīng)網(wǎng)絡(luò)實例 150
7.7.5 使用Functional API
構(gòu)建神經(jīng)網(wǎng)絡(luò)實例 156
7.7.6 使用Subclassing API
構(gòu)建神經(jīng)網(wǎng)絡(luò)實例 157
7.8 小結(jié) 158
第8章 視覺處理基礎(chǔ) 159
8.1 從全連接層到卷積層 159
8.1.1 圖像的兩個特性 160
8.1.2 卷積神經(jīng)網(wǎng)絡(luò)概述 161
8.2 卷積層 162
8.2.1 卷積核 163
8.2.2 步幅 165
8.2.3 填充 166
8.2.4 多通道上的卷積 166
8.2.5 激活函數(shù) 168
8.2.6 卷積函數(shù) 168
8.2.7 轉(zhuǎn)置卷積 169
8.2.8 特征圖與感受野 171
8.2.9 全卷積網(wǎng)絡(luò) 171
8.3 池化層 172
8.3.1 局部池化 173
8.3.2 全局池化 174
8.4 現(xiàn)代經(jīng)典網(wǎng)絡(luò) 175
8.4.1 LeNet-5模型 175
8.4.2 AlexNet模型 176
8.4.3 VGG模型 177
8.4.4 GoogLeNet模型 178
8.4.5 ResNet模型 179
8.4.6 DenseNet模型 179
8.5 卷積神經(jīng)網(wǎng)絡(luò)分類實例 181
8.5.1 使用Subclassing API
構(gòu)建網(wǎng)絡(luò) 181
8.5.2 卷積神經(jīng)網(wǎng)絡(luò)分類實例的
主要步驟 181
8.5.3 通過數(shù)據(jù)增強(qiáng)提升
性能 184
8.5.4 通過現(xiàn)代網(wǎng)絡(luò)架構(gòu)提升
網(wǎng)絡(luò)性能 185
8.6 小結(jié) 187
第9章 自然語言處理基礎(chǔ) 188
9.1 從語言模型到循環(huán)神經(jīng)網(wǎng)絡(luò) 188
9.1.1 鏈?zhǔn)椒▌t 189
9.1.2 馬爾可夫假設(shè)與N元
語法模型 189
9.1.3 從N元語法模型到隱含
狀態(tài)表示 189
9.1.4 從神經(jīng)網(wǎng)絡(luò)到有隱含
狀態(tài)的循環(huán)神經(jīng)網(wǎng)絡(luò) 190
9.1.5 使用循環(huán)神經(jīng)網(wǎng)絡(luò)構(gòu)建
語言模型 192
9.1.6 多層循環(huán)神經(jīng)網(wǎng)絡(luò) 192
9.2 正向傳播與隨時間反向傳播 193
9.3 現(xiàn)代循環(huán)神經(jīng)網(wǎng)絡(luò) 196
9.3.1 LSTM 196
9.3.2 GRU 197
9.3.3 Bi-RNN 197
9.4 幾種特殊架構(gòu) 198
9.4.1 編碼器?-?解碼器架構(gòu) 198
9.4.2 Seq2Seq架構(gòu) 200
9.5 循環(huán)神經(jīng)網(wǎng)絡(luò)的應(yīng)用場景 201
9.6 循環(huán)神經(jīng)網(wǎng)絡(luò)實踐 202
9.6.1 使用LSTM實現(xiàn)文本
分類 202
9.6.2 把CNN和RNN組合
在一起 203
9.7 小結(jié) 206
第10章 注意力機(jī)制 207
10.1 注意力機(jī)制概述 207
10.1.1 兩種常見注意力
機(jī)制 208
10.1.2 來自生活的注意力 208
10.1.3 注意力機(jī)制的本質(zhì) 208
10.2 帶注意力機(jī)制的編碼器?-?解碼器架構(gòu) 210
10.2.1 引入注意力機(jī)制 211
10.2.2 計算注意力分配值 212
10.3 可視化Transformer架構(gòu) 215
10.3.1 Transformer的頂層
設(shè)計 215
10.3.2 編碼器與解碼器的
輸入 216
10.3.3 自注意力 217
10.3.4 多頭注意力 220
10.3.5 自注意力與卷積神經(jīng)
網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)的
異同 222
10.3.6 為加深Transformer
網(wǎng)絡(luò)層保駕護(hù)航的幾種
方法 223
10.3.7 如何進(jìn)行自監(jiān)督
學(xué)習(xí) 224
10.3.8 Transformer在視覺
領(lǐng)域的應(yīng)用 225
10.4 使用TensorFlow實現(xiàn)
Transformer 227
10.4.1 Transformer
架構(gòu)圖 227
10.4.2 架構(gòu)說明 227
10.4.3 構(gòu)建縮放的點積注意力
模塊 228
10.4.4 構(gòu)建多頭注意力
模塊 229
10.4.5 構(gòu)建前饋神經(jīng)網(wǎng)絡(luò)
模塊 230
10.4.6 構(gòu)建EncoderLayer
模塊 230
10.4.7 構(gòu)建Encoder模塊 231
10.4.8 構(gòu)建DecoderLayer
模塊 232
10.4.9 構(gòu)建Decoder模塊 233
10.4.10 構(gòu)建Transformer
模型 234
10.4.11 定義掩碼函數(shù) 235
10.5 小結(jié) 238
第11章 目標(biāo)檢測 239
11.1 目標(biāo)檢測及主要挑戰(zhàn) 239
11.1.1 邊界框的表示 240
11.1.2 手工標(biāo)注圖像的
真實值 241
11.1.3 主要挑戰(zhàn) 244
11.1.4 選擇性搜索 245
11.1.5 錨框 245
11.1.6 RPN算法 247
11.2 優(yōu)化候選框的算法 248
11.2.1 交并比 248
11.2.2 非極大值抑制 248
11.2.3 邊框回歸 249
11.2.4 使候選框輸出為固定
大小 251
11.3 典型的目標(biāo)檢測算法 253
11.3.1 R-CNN 253
11.3.2 Fast R-CNN 254
11.3.3 Faster R-CNN 255
11.3.4 Mask R-CNN 256
11.3.5 YOLO 257
11.3.6 Swin Transformer 257
11.3.7 各種算法的性能
比較 258
11.4 小結(jié) 258
第12章 生成式深度學(xué)習(xí) 259
12.1 用變分自編碼器生成圖像 259
12.1.1 自編碼器 259
12.1.2 變分自編碼器 260
12.1.3 用變分自編碼器生成
圖像實例 261
12.2 GAN簡介 263
12.2.1 GAN的架構(gòu) 264
12.2.2 GAN的損失函數(shù) 265
12.3 用GAN生成圖像 266
12.3.1 判別器 266
12.3.2 生成器 266
12.3.3 訓(xùn)練模型 267
12.3.4 可視化結(jié)果 267
12.4 VAE與GAN的異同 267
12.5 CGAN 268
12.5.1 CGAN的架構(gòu) 268
12.5.2 CGAN 判別器 269
12.5.3 CGAN生成器 269
12.5.4 訓(xùn)練模型 270
12.5.5 動態(tài)查看指定標(biāo)簽的
圖像 270
12.6 提升GAN訓(xùn)練效果的一些
技巧 270
12.7 小結(jié) 271
第三部分 深度學(xué)習(xí)實踐
第13章 實戰(zhàn)生成式模型 274
13.1 Deep Dream模型 274
13.1.1 Deep Dream的
原理 274
13.1.2 Deep Dream算法的
流程 275
13.1.3 使用TensorFlow實現(xiàn)Deep Dream 275
13.2 風(fēng)格遷移 277
13.2.1 內(nèi)容損失 278
13.2.2 風(fēng)格損失 279
13.2.3 訓(xùn)練模型 281
13.3 小結(jié) 282
第14章 目標(biāo)檢測實例 283
14.1 數(shù)據(jù)集簡介 283
14.2 準(zhǔn)備數(shù)據(jù) 284
14.3 訓(xùn)練模型 286
14.4 測試模型 292
14.5 小結(jié) 293
第15章 人臉檢測與識別實例 294
15.1 人臉識別簡介 294
15.2 項目概況 297
15.3 項目詳細(xì)實施步驟 297
15.3.1 圖像預(yù)處理 298
15.3.2 構(gòu)建模型 299
15.3.3 測試模型 300
15.4 小結(jié) 302
第16章 文本檢測與識別實例 303
16.1 項目架構(gòu)說明 303
16.2 項目實施步驟 304
16.2.1 手工生成訓(xùn)練數(shù)據(jù) 304
16.2.2 數(shù)據(jù)預(yù)處理 306
16.2.3 構(gòu)建模型 308
16.2.4 訓(xùn)練模型 309
16.3 小結(jié) 311
第17章 基于Transformer的
對話實例 312
17.1 數(shù)據(jù)預(yù)處理 312
17.2 構(gòu)建注意力模塊 315
17.3 構(gòu)建Transformer架構(gòu) 316
17.4 定義損失函數(shù) 320
17.5 初始化并編譯模型 321
17.6 測試評估模型 321
17.7 小結(jié) 322
第18章 基于Transformer的
圖像處理實例 323
18.1 導(dǎo)入數(shù)據(jù) 323
18.2 預(yù)處理數(shù)據(jù) 324
18.3 構(gòu)建模型 326
18.4 編譯、訓(xùn)練模型 329
18.5 可視化運行結(jié)果 330
18.6 小結(jié) 331
第四部分 強(qiáng)化學(xué)習(xí)
第19章 強(qiáng)化學(xué)習(xí)基礎(chǔ) 334
19.1 強(qiáng)化學(xué)習(xí)基礎(chǔ)概述 334
19.1.1 智能體與環(huán)境的
交互 335
19.1.2 回報 335
19.1.3 馬爾可夫決策過程 336
19.1.4 貝爾曼方程 336
19.1.5 貝爾曼優(yōu)方程 337
19.1.6 同步策略與異步
策略 337
19.1.7 有模型訓(xùn)練與無模型
訓(xùn)練 337
19.2 時序差分算法 338
19.3 Q-Learning算法 338
19.3.1 Q-Learning算法的
主要流程 339
19.3.2 Q函數(shù) 339
19.3.3 貪婪策略 340
19.4 SARSA 算法 340
19.5 DQN算法 340
19.5.1 Q-Learning算法的
局限性 341
19.5.2 用深度學(xué)習(xí)處理強(qiáng)化學(xué)習(xí)時需要解決的問題 341
19.5.3 用DQN解決問題的
方法 341
19.5.4 定義損失函數(shù) 342
19.5.5 DQN的經(jīng)驗回放
機(jī)制 342
19.5.6 目標(biāo)網(wǎng)絡(luò) 342
19.5.7 網(wǎng)絡(luò)模型 342
19.5.8 DQN算法的實現(xiàn) 343
19.6 小結(jié) 344
第20章 強(qiáng)化學(xué)習(xí)實踐 345
20.1 Q-Learning算法實例 345
20.2 SARSA算法實例 346
20.2.1 游戲場景 346
20.2.2 核心代碼說明 347
20.3 用TensorFlow實現(xiàn)DQN算法 348
20.4 小結(jié) 352
附錄A TensorFlow-GPU 2+
升級安裝配置 353
附錄B 從TensorFlow1.x升級到TensorFlow 2.x 360