配套學習資源
前言
第1篇 深度學習與TensorFlow基礎
第1章 快速瞭解人工智能與TensorFlow 2
1.1 什麼是深度學習 2
1.2 TensorFlow是做什麼的 3
1.3 TensorFlow的特點 4
1.4 其他深度學習框架特點及介紹 5
1.5 如何通過本書學好深度學習 6
1.5.1 深度學習怎麼學 6
1.5.2 如何學習本書 7
第2章 搭建開發環境 8
2.1 下載及安裝Anaconda開發工具 8
2.2 在Windows平颱下載及安裝TensorFlow 11
2.3 GPU版本的安裝方法 12
2.3.1 安裝CUDA軟件包 12
2.3.2 安裝cuDNN庫 13
2.3.3 測試顯卡 14
2.4 熟悉Anaconda 3開發工具 15
2.4.1 快速瞭解Spyder 16
2.4.2 快速瞭解Jupyter Notebook 18
第3章 TensorFlow基本開發步驟——以邏輯迴歸擬閤二維數據為例 19
3.1 實例1:從一組看似混亂的數據中找齣y≈2x的規律 19
3.1.1 準備數據 20
3.1.2 搭建模型 21
3.1.3 迭代訓練模型 23
3.1.4 使用模型 25
3.2 模型是如何訓練齣來的 25
3.2.1 模型裏的內容及意義 25
3.2.2 模型內部的數據流嚮 26
3.3 瞭解TensorFlow開發的基本步驟 27
3.3.1 定義輸入節點的方法 27
3.3.2 實例2:通過字典類型定義輸入節點 28
3.3.3 實例3:直接定義輸入節點 28
3.3.4 定義“學習參數”的變量 29
3.3.5 實例4:通過字典類型定義“學習參數” 29
3.3.6 定義“運算” 29
3.3.7 優化函數,優化目標 30
3.3.8 初始化所有變量 30
3.3.9 迭代更新參數到最優解 31
3.3.10 測試模型 31
3.3.11 使用模型 31
第4章 TensorFlow編程基礎 32
4.1 編程模型 32
4.1.1 瞭解模型的運行機製 33
4.1.2 實例5:編寫hello world程序演示session的使用 34
4.1.3 實例6:演示with session的使用 35
4.1.4 實例7:演示注入機製 35
4.1.5 建立session的其他方法 36
4.1.6 實例8:使用注入機製獲取節點 36
4.1.7 指定GPU運算 37
4.1.8 設置GPU使用資源 37
4.1.9 保存和載入模型的方法介紹 38
4.1.10 實例9:保存/載入綫性迴歸模型 38
4.1.11 實例10:分析模型內容,演示模型的其他保存方法 40
4.1.12 檢查點(Checkpoint) 41
4.1.13 實例11:為模型添加保存檢查點 41
4.1.14 實例12:更簡便地保存檢查點 44
4.1.15 模型操作常用函數總結 45
4.1.16 TensorBoard可視化介紹 45
4.1.17 實例13:綫性迴歸的TensorBoard可視化 46
4.2 TensorFlow基礎類型定義及操作函數介紹 48
4.2.1 張量及操作 49
4.2.2 算術運算函數 55
4.2.3 矩陣相關的運算 56
4.2.4 復數操作函數 58
4.2.5 規約計算 59
4.2.6 分割 60
4.2.7 序列比較與索引提取 61
4.2.8 錯誤類 62
4.3 共享變量 62
4.3.1 共享變量用途 62
4.3.2 使用get-variable獲取變量 63
4.3.3 實例14:演示get_variable和Variable的區彆 63
4.3.4 實例15:在特定的作用域下獲取變量 65
4.3.5 實例16:共享變量功能的實現 66
4.3.6 實例17:初始化共享變量的作用域 67
4.3.7 實例18:演示作用域與操作符的受限範圍 68
4.4 實例19:圖的基本操作 70
4.4.1 建立圖 70
4.4.2 獲取張量 71
4.4.3 獲取節點操作 72
4.4.4 獲取元素列錶 73
4.4.5 獲取對象 73
4.4.6 練習題 74
4.5 配置分布式TensorFlow 74
4.5.1 分布式TensorFlow的角色及原理 74
4.5.2 分布部署TensorFlow的具體方法 75
4.5.3 實例20:使用TensorFlow實現分布式部署訓練 75
4.6 動態圖(Eager) 81
4.7 數據集(tf.data) 82
第5章 識彆圖中模糊的手寫數字(實例21) 83
5.1 導入圖片數據集 84
5.1.1 MNIST數據集介紹 84
5.1.2 下載並安裝MNIST數據集 85
5.2 分析圖片的特點,定義變量 87
5.3 構建模型 87
5.3.1 定義學習參數 87
5.3.2 定義輸齣節點 88
5.3.3 定義反嚮傳播的結構 88
5.4 訓練模型並輸齣中間狀態參數 89
5.5 測試模型 90
5.6 保存模型 91
5.7 讀取模型 92
第2篇 深度學習基礎——神經網絡
第6章 單個神經元 96
6.1 神經元的擬閤原理 96
6.1.1 正嚮傳播 98
6.1.2 反嚮傳播 98
6.2 激活函數——加入非綫性因素,解決綫性模型缺陷 99
6.2.1 Sigmoid函數 99
6.2.2 Tanh函數 100
6.2.3 ReLU函數 101
6.2.4 Swish函數 103
6.2.5 激活函數總結 103
6.3 softmax算法——處理分類問題 103
6.3.1 什麼是softmax 104
6.3.2 softmax原理 104
6.3.3 常用的分類函數 105
6.4 損失函數——用真實值與預測值的距離來指導模型的收斂方嚮 105
6.4.1 損失函數介紹 105
6.4.2 TensorFlow中常見的loss函數 106
6.5 softmax算法與損失函數的綜閤應用 108
6.5.1 實例22:交叉熵實驗 108
6.5.2 實例23:one_hot實驗 109
6.5.3 實例24:sparse交叉熵的使用 110
6.5.4 實例25:計算loss值 110
6.5.5 練習題 111
6.6 梯度下降——讓模型逼近最小偏差 111
6.6.1 梯度下降的作用及分類 111
6.6.2 TensorFlow中的梯度下降函數 112
6.6.3 退化學習率——在訓練的速度與精度之間找到平衡 113
6.6.4 實例26:退化學習率的用法舉例 114
6.7 初始化學習參數 115
6.8 單個神經元的擴展——Maxout網絡 116
6.8.1 Maxout介紹 116
6.8.2 實例27:用Maxout網絡實現MNIST分類 117
6.9 練習題 118
第7章 多層神經網絡——解決非綫性問題 119
7.1 綫性問題與非綫性問題 119
7.1.1 實例28:用綫性單分邏輯迴歸分析腫瘤是良性還是惡性的 119
7.1.2 實例29:用綫性邏輯迴歸處理多分類問題 123
7.1.3 認識非綫性問題 129
7.2 使用隱藏層解決非綫性問題 130
7.2.1 實例30:使用帶隱藏層的神經網絡擬閤異或操作 130
7.2.2 非綫性網絡的可視化及其意義 133
7.2.3 練習題 135
7.3 實例31:利用全連接網絡將圖片進行分類 136
7.4 全連接網絡訓練中的優化技巧 137
7.4.1 實例32:利用異或數據集演示過擬閤問題 138
7.4.2 正則化 143
7.4.3 實例33:通過正則化改善過擬閤情況 144
7.4.4 實例34:通過增大數據集改善過擬閤 145
7.4.5 練習題 146
7.4.6 dropout——訓練過程中,將部分神經單元暫時丟棄 146
7.4.7 實例35:為異或數據集模型添加dropout 147
7.4.8 實例36:基於退化學習率dropout技術來擬閤異或數據集 149
7.4.9 全連接網絡的深淺關係 150
7.5 練習題 150
第8章 捲積神經網絡——解決參數太多問題 151
8.1 全連接網絡的局限性 151
8.2 理解捲積神經網絡 152
8.3 網絡結構 153
8.3.1 網絡結構描述 153
8.3.2 捲積操作 155
8.3.3 池化層 157
8.4 捲積神經網絡的相關函數 158
8.4.1 捲積函數tf.nn.conv2d 158
8.4.2 padding規則介紹 159
8.4.3 實例37:捲積函數的使用 160
8.4.4 實例38:使用捲積提取圖片的輪廓 165
8.4.5 池化函數tf.nn.max_pool(avg_pool) 167
8.4.6 實例39:池化函數的使用 167
8.5 使用捲積神經網絡對圖片分類 170
8.5.1 CIFAR介紹 171
8.5.2 下載CIFAR數據 172
8.5.3 實例40:導入並顯示CIFAR數據集 173
8.5.4 實例41:顯示CIFAR數據集的原始圖片 174
8.5.5 cifar10_input的其他功能 176
8.5.6 在TensorFlow中使用queue 176
8.5.7 實例42:協調器的用法演示 178
8.5.8 實例43:為session中的隊列加上協調器 179
8.5.9 實例44:建立一個帶有全局平均池化層的捲積神經網絡 180
8.5.10 練習題 183
8.6 反捲積神經網絡 183
8.6.1 反捲積神經網絡的應用場景 184
8.6.2 反捲積原理 184
8.6.3 實例45:演示反捲積的操作 185
8.6.4 反池化原理 188
8.6.5 實例46:演示反池化的操作 189
8.6.6 實例47:演示gradients基本用法 192
8.6.7 實例48:使用gradients對多個式子求多變量偏導 192
8.6.8 實例49:演示梯度停止的實現 193
8.7 實例50:用反捲積技術復原捲積網絡各層圖像 195
8.8 善用函數封裝庫 198
8.8.1 實例51:使用函數封裝庫重寫CIFAR捲積網絡 198
8.8.2 練習題 201
8.9 深度學習的模型訓練技巧 201
8.9.1 實例52:優化捲積核技術的演示 201
8.9.2 實例53:多通道捲積技術的演示 202
8.9.3 批量歸一化 204
8.9.4 實例54:為CIFAR圖片分類模型添加BN 207
8.9.5 練習題 209
第9章 循環神經網絡——具有記憶功能的網絡 210
9.1 瞭解RNN的工作原理 210
9.1.1 瞭解人的記憶原理 210
9.1.2 RNN網絡的應用領域 212
9.1.3 正嚮傳播過程 212
9.1.4 隨時間反嚮傳播 213
9.2 簡單RNN 215
9.2.1 實例55:簡單循環神經網絡實現——裸寫一個退位減法器 215
9.2.2 實例56:使用RNN網絡擬閤迴聲信號序列 220
9.3 循環神經網絡(RNN)的改進 225
9.3.1 LSTM網絡介紹 225
9.3.2 窺視孔連接(Peephole) 228
9.3.3 帶有映射輸齣的STMP 230
9.3.4 基於梯度剪輯的cell 230
9.3.5 GRU網絡介紹 230
9.3.6 Bi-RNN網絡介紹 231
9.3.7 基於神經網絡的時序類分類CTC 232
9.4 TensorFlow實戰RNN 233
9.4.1 TensorFlow中的cell類 233
9.4.2 通過cell類構建RNN 234
9.4.3 實例57:構建單層LSTM網絡對MNIST數據集分類 239
9.4.4 實例58:構建單層GRU網絡對MNIST數據集分類 240
9.4.5 實例59:創建動態單層RNN網絡對MNIST數據集分類 240
9.4.6 實例60:靜態多層LSTM對MNIST數據集分類 241
9.4.7 實例61:靜態多層RNN-LSTM連接GRU對MNIST數據集分類 242
9.4.8 實例62:動態多層RNN對MNIST數據集分類 242
9.4.9 練習題 243
9.4.10 實例63:構建單層動態雙嚮RNN對MNIST數據集分類 243
9.4.11 實例64:構建單層靜態雙嚮RNN對MNIST數據集分類 244
9.4.12 實例65:構建多層雙嚮RNN對MNIST數據集分類 246
9.4.13 實例66:構建動態多層雙嚮RNN對MNIST數據集分類 247
9.4.14 初始化RNN 247
9.4.15 優化RNN 248
9.4.16 實例67:在GRUCell中實現LN 249
9.4.17 CTC網絡的loss——ctc_loss 251
9.4.18 CTCdecoder 254
9.5 實例68:利用BiRNN實現語音識彆 255
9.5.1 語音識彆背景 255
9.5.2 獲取並整理樣本 256
9.5.3 訓練模型 265
9.5.4 練習題 272
9.6 實例69:利用RNN訓練語言模型 273
9.6.1 準備樣本 273
9.6.2 構建模型 275
9.7 語言模型的係統學習 279
9.7.1 統計語言模型 279
9.7.2 詞嚮量 279
9.7.3 word2vec 281
9.7.4 實例70:用CBOW模型訓練自己的word2vec 283
9.7.5 實例71:使用指定侯選采樣本訓練word2vec 293
9.7.6 練習題 296
9.8 處理Seq2Seq任務 296
9.8.1 Seq2Seq任務介紹 296
9.8.2 Encoder-Decoder框架 297
9.8.3 實例72:使用basic_rnn_seq2seq擬閤麯綫 298
9.8.4 實例73:預測當天的股票價格 306
9.8.5 基於注意力的Seq2Seq 310
9.8.6 實例74:基於Seq2Seq注意力模型實現中英文機器翻譯 313
9.9 實例75:製作一個簡單的聊天機器人 339
9.9.1 構建項目框架 340
9.9.2 準備聊天樣本 340
9.9.3 預處理樣本 340
9.9.4 訓練樣本 341
9.9.5 測試模型 342
9.10 時間序列的高級接口TFTS 344
第10章 自編碼網絡——能夠自學習樣本特徵的網絡 346
10.1 自編碼網絡介紹及應用 346
10.2 最簡單的自編碼網絡 347
10.3 自編碼網絡的代碼實現 347
10.3.1 實例76:提取圖片的特徵,並利用特徵還原圖片 347
10.3.2 綫性解碼器 351
10.3.3 實例77:提取圖片的二維特徵,並利用二維特徵還原圖片 351
10.3.4 實例78:實現捲積網絡的自編碼 356
10.3.5 練習題 358
10.4 去噪自編碼 359
10.5 去噪自編碼網絡的代碼實現 359
10.5.1 實例79:使用去噪自編碼網絡提取MNIST特徵 359
10.5.2 練習題 363
10.6 棧式自編碼 364
10.6.1 棧式自編碼介紹 364
10.6.2 棧式自編碼在深度學習中的意義 365
10.7 深度學習中自編碼的常用方法 366
10.7.1 代替和級聯 366
10.7.2 自編碼的應用場景 366
10.8 去噪自編碼與棧式自編碼的綜閤實現 366
10.8.1 實例80:實現去噪自編碼 367
10.8.2 實例81:添加模型存儲支持分布訓練 375
10.8.3 小心分布訓練中的“坑” 376
10.8.4 練習題 377
10.9 變分自編碼 377
10.9.1 什麼是變分自編碼 377
10.9.2 實例82:使用變分自編碼模擬生成MNIST數據 377
10.9.3 練習題 384
10.10 條件變分自編碼 385
10.10.1 什麼是條件變分自編碼 385
10.10.2 實例83:使用標簽指導變分自編碼網絡生成MNIST數據 385
第3篇 深度學習進階
第11章 深度神經網絡 392
11.1 深度神經網絡介紹 392
11.1.1 深度神經網絡起源 392
11.1.2 經典模型的特點介紹 393
11.2 GoogLeNet模型介紹 394
11.2.1 MLP捲積層 394
11.2.2 全局均值池化 395
11.2.3 Inception 原始模型 396
11.2.4 Inception v1模型 396
11.2.5 Inception v2模型 397
11.2.6 Inception v3模型 397
11.2.7 Inception v4模型 399
11.3 殘差網絡(ResNet) 399
11.3.1 殘差網絡結構 399
11.3.2 殘差網絡原理 400
11.4 Inception-ResNet-v2結構 400
11.5 TensorFlow中的圖片分類模型庫——slim 400
11.5.1 獲取models中的slim模塊代碼 401
11.5.2 models中的Slim目錄結構 401
11.5.3 slim中的數據集處理 403
11.5.4 實例84:利用slim讀取TFRecord中的數據 405
11.5.5 在slim中訓練模型 407
11.6 使用slim中的深度網絡模型進行圖像的識彆與檢測 410
11.6.1 實例85:調用Inception_ResNet_v2模型進行圖像識彆 410
11.6.2 實例86:調用VGG模型進行圖像檢測 413
11.7 實物檢測模型庫——Object Detection API 417
11.7.1 準備工作 418
11.7.2 實例87:調用Object Detection API進行實物檢測 421
11.8 實物檢測領域的相關模型 425
11.8.1 RCNN基於捲積神經網絡特徵的區域方法 426
11.8.2 SPP-Net:基於空間金字塔池化的優化RCNN方法 426
11.8.3 Fast-R-CNN快速的RCNN模型 426
11.8.4 YOLO:能夠一次性預測多個位置和類彆的模型 427
11.8.5 SSD:比YOLO更快更準的模型 428
11.8.6 YOLO2:YOLO的升級版模型 428
11.9 機器自己設計的模型(NASNet) 428
第12章 對抗神經網絡(GAN) 430
12.1 GAN的理論知識 430
12.1.1 生成式模型的應用 431
12.1.2 GAN的訓練方法 431
12.2 DCGAN——基於深度捲積的GAN 432
12.3 InfoGAN和ACGAN:指定類彆生成模擬樣本的GAN 432
12.3.1 InfoGAN:帶有隱含信息的GAN 432
12.3.2 AC-GAN:帶有輔助分類信息的GAN 433
12.3.3 實例88:構建InfoGAN生成MNIST模擬數據 434
12.3.4 練習題 440
12.4 AEGAN:基於自編碼器的GAN 441
12.4.1 AEGAN原理及用途介紹 441
12.4.2 實例89:使用AEGAN對MNIST數據集壓縮特徵及重建 442
12.5 WGAN-GP:更容易訓練的GAN 447
12.5.1 WGAN:基於推土機距離原理的GAN 448
12.5.2 WGAN-GP:帶梯度懲罰項的WGAN 449
12.5.3 實例90:構建WGAN-GP生成MNIST數據集 451
12.5.4 練習題 455
12.6 LSGAN(最小乘二GAN):具有WGAN 同樣效果的GAN 455
12.6.1 LSGAN介紹 455
12.6.2 實例91:構建LSGAN生成MNIST模擬數據 456
12.7 GAN-cls:具有匹配感知的判彆器 457
12.7.1 GAN-cls的具體實現 458
12.7.2 實例92:使用GAN-cls技術實現生成標簽匹配的模擬數據 458
12.8 SRGAN——適用於超分辨率重建的GAN 461
12.8.1 超分辨率技術 461
12.8.2 實例93:ESPCN實現MNIST數據集的超分辨率重建 463
12.8.3 實例94:ESPCN實現flowers數據集的超分辨率重建 466
12.8.4 實例95:使用殘差網絡的ESPCN 472
12.8.5 SRGAN的原理 477
12.8.6 實例96:使用SRGAN實現flowers數據集的超分辨率修復 477
12.9 GAN網絡的高級接口TFGAN 485
12.10 總結 486
· · · · · · (
收起)