深度學習之TensorFlow
《深度學習之TensorFlow》,副標題:入門原理與進階實戰,李金洪 著,出版社: 機械工業出版社。
截至2022年,機械工業出版社年出版新書近2700種,年引進和輸出版權總量近800種,產品橫跨科技出版、教育出版、大眾出版三大板塊,覆蓋機械、電工電子、汽車、建築、計算機、經管、心理[1]、生活、科普、藝術設計、文創等十多個專業領域,以及高等教育[2]、職業教育、技能教育等不同教育層次。
目錄
內容簡介
本書共12章,分為3篇。第1篇深度學習與TensorFlow基礎,包括快速了解人工智能與TensorFlow、搭建開發環境、TensorFlow基本開發步驟、TensorFlow編程基礎、識別圖中模糊的手寫數字等內容;第2篇深度學習基礎——神經網絡,介紹了神經網絡的基礎模型,包括單個神經元、多層神經網絡、卷積神經網絡、循環神經網絡、自編碼網絡等內容;第3篇深度學習進階,是對基礎網絡模型的靈活運用與自由組合,是對前面知識的綜合及拔高,包括深度神經網絡和對抗神經網絡兩章內容。
目錄
配套學習資源
前言
第1篇 深度學習與TensorFlow基礎
第1章 快速了解人工智能與TensorFlow2
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平台下載及安裝TensorFlow11
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 快速了解Spyder16
2.4.2 快速了解Jupyter Notebook18
第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 配置分布式TensorFlow74
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 什麼是softmax104
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:為異或數據集模型添加dropout147
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.conv2d158
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中使用queue176
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圖片分類模型添加BN207
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 簡單RNN215
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 帶有映射輸出的STMP230
9.3.4 基於梯度剪輯的cell230
9.3.5 GRU網絡介紹230
9.3.6 Bi-RNN網絡介紹231
9.3.7 基於神經網絡的時序類分類CTC232
9.4 TensorFlow實戰RNN233
9.4.1 TensorFlow中的cell類233
9.4.2 通過cell類構建RNN234
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 初始化RNN247
9.4.15 優化RNN248
9.4.16 實例67:在GRUCell中實現LN249
9.4.17 CTC網絡的loss——ctc_loss251
9.4.18 CTCdecoder254
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 word2vec281
9.7.4 實例70:用CBOW模型訓練自己的word2vec283
9.7.5 實例71:使用指定侯選採樣本訓練word2vec293
9.7.6 練習題296
9.8 處理
參考文獻
- ↑ 談心理健康教育對學生的重要性 ,搜狐,2020-04-12
- ↑ 2020中國高等教育十大關鍵詞,搜狐,2020-12-28