Python神經網絡入門與實戰

王凱 著

  • 出版商: 北京大學
  • 出版日期: 2020-10-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • 頁數: 248
  • 裝訂: 平裝
  • ISBN: 7301316291
  • ISBN-13: 9787301316290
  • 下單後立即進貨 (約4週~6週)

商品描述

本書從神經網絡的基礎知識講起,逐步深入到Python進階實戰,通過對各種實用的第三方庫進行詳細講解與實戰運用,
讓讀者不但能夠更加深入地了解神經網絡,而且能夠簡單高效地搭建自己的神經網絡,即使沒有專業背景知識也能輕鬆入門神經網絡。
本書分為11章,涵蓋的主要內容有神經網絡概述,神經網絡基礎知識,計算機程序的特點,
神經網絡優化算法,搭建Python環境,Python基礎知識,深度學習框架PyTorch基礎知識,
NumPy簡介與使用,OpenCV簡介與使用,OS遍歷文件夾,Python中Matplotlib可視化繪圖,
Lenet-5、AlexNet、VGG16網絡模型,回歸問題和分類問題,貓狗識別程序開發,驗證碼識別程序開發,
過擬合問題與解決方法,梯度消失與爆炸,加速神經網絡訓練的方法,人工智能的未來發展趨勢等。
本書內容通俗易懂,案例豐富,實用性強,特別適合神經網絡的零基礎入門讀者閱讀,也適合Python 程序員、PyTorch愛好者等閱讀。

作者簡介

王凱
西安電子科技大學人工智能學院計算機專業研究生,曾參加過全國大學生驗證碼識別大賽並獲得三等獎,
長期從事神經網絡的研究,具有豐富的開發實踐經驗。

目錄大綱

第1章神經網絡概述1
1.1 神經網絡簡介2
1.1.1 神經網絡的定義2
1.1.2 神經網絡可解決的問題3
1.2 神經網絡的靈感來源3
1.2.1 對人類認知過程的傳統認知3
1.2.2 對人類認知過程的現代認知4
1.2.3 神經元連接的靈感4
1.3 為什麼要學習神經網絡4
1.3.1 神經網絡的發展4
1.3.2 學習神經網絡有什麼用5
1.4 怎樣學習神經網絡6
1.4.1 選擇一門編程語言6
1.4.2 對算法的理解8
1.4.3 寫博客8
1.5 小結9
第2章神經網絡基礎知識10
2.1 感知器模型11
2.1.1 神經元細胞的本質11
2.1.2 感知器模型的構建11
2.2 訓練感知器13
2.2.1 計算誤差13
2.2.2 誤差反向傳播13
2.2.3 訓練示例14
2.3 激活函數15
2.3.1 激活函數的定義16
2.3.2 Sigmoid函數16
2.3.3 Tanh函數17
2.3.4 ReLU函數18
2.4 損失函數20
2.4.1 損失函數的定義及作用20
2.4.2 絕對值損失函數20
2.4.3 均方差損失函數21
2.4.4 交叉熵損失函數23
2.5 單層神經網絡23
2.5.1 單層神經網絡的結構23
2.5.2 單層神經網絡的參數25
2.5.3 單層神經網絡的前向傳播過程25
2.6 訓練單層神經網絡26
2.6.1 梯度下降算法26
2.6.2 反向傳播算法29
2.6.3 理解反向傳播31
2.7 多層神經網絡32
2.7.1 多層神經網絡的結構33
2.7.2 參數向量化33
2.8 卷積神經網絡36
2.8.1 卷積神經網絡簡介36
2.8.2 卷積核37
2.8.3 卷積操作38
2.8.4 池化操作41
2.8.5 卷積層42
2.8.6 池化層43
2.8.7 全連接層44
2.9 小結44
第3章實戰前的預備知識46
3.1 計算機程序47
3.1.1 計算機程序簡介47
3.1.2 計算機程序的執行過程48
3.1.3 計算機程序的開發流程49
3.1.4 計算機程序的特點50
3.2 加速訓練51
3.2.1 CPU與GPU 51
3.2.2 歸一化52
3.2.3 其他學習算法53
3.2.4 Mini-Batch 54
3.3 構建樣本集55
3.3.1 Tensor類型55
3.3.2 訓練集56
3.3.3 測試集57
3.3.4 交叉驗證集58
3.4 小結59
第4章Python入門與實戰60
4.1 Python簡介61
4.1.1 什麼是Python 61
4.1.2 Python的特點61
4.1.3 為什麼要用Python搭建神經網絡62
4.2 搭建Python環境63
4.2.1 安裝Python 3.7(Anaconda) 63
4.2.2 安裝CUDA 10.0 66
4.2.3 安裝PyCharm 68
4.2.4 PyCharm新建項目70
4.2.5 PyCharm的一些基本設置71
4.2.6 PyCharm運行程序73
4.3 Python基礎74
4.3.1 輸入語句與輸出語句74
4.3.2 變量的作用與定義76
4.3.3 變量的命名規則和習慣78
4.3.4 運算符79
4.3.5 數據類型81
4.3.6 if語句82
4.3.7 循環語句83
4.3.8 函數85
4.3.9 類85
4.3.10 列表和元組87
4.3.11 引入模塊87
4.3.12 註釋88
4.4 編寫第一個感知器程序88
4.4.1 需求分析88
4.4.2 主程序89
4.4.3 感知器前向傳播程序90
4.4.4 誤差計算程序91
4.4.5 運行結果91
4.5 小結92
第5章深度學習框架PyTorch入門與實戰93
5.1 PyTorch簡介94
5.1.1 什麼是PyTorch 94
5.1.2 PyTorch的特點94
5.1.3 為什麼要選擇PyTorch搭建神經網絡95
5.2 安裝PyTorch框架95
5.2.1 conda命令96
5.2.2 選擇PyTorch版本進行安裝97
5.3 PyTorch基礎99
5.3.1 構建輸入/輸出99
5.3.2 構建網絡結構100
5.3.3 定義優化器與損失函數102
5.3.4 保存和加載網絡103
5.4 小實戰:用PyTorch搭建一個神經網絡以學習異或運算104
5.4.1 需求分析104
5.4.2 訓練程序105
5.4.3 測試程序107
5.5 小結109
第6章Python搭建神經網絡進階110
6.1 NumPy簡介111
6.1.1 NumPy的基本功能111
6.1.2 NumPy的數據類型111
6.2 NumPy的使用112
6.2.1 安裝NumPy 112
6.2.2 創建數組112
6.2.3 存儲和讀取數組114
6.2.4 索引和切片115
6.2.5 重塑數組116
6.2.6 數組的運算117
6.3 OpenCV簡介119
6.3.1 OpenCV概述119
6.3.2 OpenCV的基本功能120
6.4 OpenCV的使用120
6.4.1 安裝OpenCV 121
6.4.2 圖像讀取與顯示121
6.4.3 圖像縮放122
6.4.4 色彩空間轉換123
6.4.5 直方圖均衡化125
6.4.6 圖像保存126
6.5 文件夾中文件的遍歷127
6.5.1 OS模塊簡介128
6.5.2 path模塊128
6.5.3 刪除文件129
6.5.4 創建文件夾129
6.5.5 文件遍歷130
6.6 構建和讀取數據集132
6.6.1 構建數據集132
6.6.2 讀取數據集135
6.7 PyTorch中卷積神經網絡有關的接口136
6.7.1 卷積層接口136
6.7.2 反捲積層接口137
6.8 小結137
第7章實戰1:回歸問題和分類問題139
7.1 Python中繪圖方法簡介140
7.1.1 Matplotlib簡介140
7.1.2 安裝Matplotlib 140
7.1.3 散點圖繪製141
7.1.4 繪圖顯示的小設置144
7.1.5 曲線繪製145
7.1.6 設置坐標軸146
7.1.7 動態繪圖148
7.2 回歸問題149
7.3 用Python搭建一個解決回歸問題的神經網絡151
7.3.1 準備工作151
7.3.2 構建網絡152
7.3.3 訓練網絡153
7.3.4 完整程序154
7.4 分類問題155
7.5 用Python搭建一個解決分類問題的神經網絡156
7.5.1 準備工作156
7.5.2 構建網絡159
7.5.3 訓練網絡160
7.5.4 可視化161
7.5.5 完整程序162
7.6 小結164
第8章實戰2:貓狗識別問題165
8.1 實戰目標166
8.1.1 目標分析166
8.1.2 樣本集167
8.2 實現思路167
8.2.1 構建樣本集168
8.2.2 測試樣本集169
8.2.3 構建網絡170
8.2.4 訓練網絡171
8.2.5 測試網絡172
8.3 完整程序及運行結果172
8.3.1 構建樣本集程序172
8.3.2 測試樣本集程序174
8.3.3 構建網絡程序175
8.3.4 訓練網絡程序177
8.3.5 可視化訓練過程179
8.3.6 測試網絡程序180
8.3.7 模擬實際運用181
8.4 對結果的思考182
8.4.1 訓練集和測試集準確率的對比182
8.4.2 準確率低的原因183
8.4.3 訓練過程的啟示184
8.5 小結184
第9章一些經典的網絡185
9.1 LeNet-5網絡模型186
9.1.1 LeNet-5網絡簡介186
9.1.2 LeNet-5網絡結構186
9.1.3 三維卷積188
9.1.4 多維卷積190
9.1.5 LeNet-5代碼實現191
9.2 AlexNet網絡模型192
9.2.1 AlexNet網絡簡介193
9.2.2 AlexNet網絡結構193
9.2.3 Same卷積194
9.2.4 Softmax分類器196
9.2.5 AlexNet代碼實現197
9.3 VGG16網絡模型198
9.3.1 VGG16網絡簡介198
9.3.2 VGG16網絡結構198
9.4 小結200
第10章實戰3:驗證碼識別問題201
10.1 實戰目標202
10.1.1 目標分析202
10.1.2 生成樣本集203
10.2 實現思路205
10.2.1 構建樣本集206
10.2.2 構建網絡207
10.2.3 訓練網絡208
10.2.4 測試網絡209
10.3 完整程序及運行結果209
10.3.1 驗證碼分割程序209
10.3.2 構建訓練集程序211
10.3.3 構建網絡程序212
10.3.4 訓練網絡程序213
10.3.5 測試網絡程序215
10.3.6 模擬實際運用216
10.4 對結果的思考217
10.4.1 訓練集和測試集準確率的對比217
10.4.2 識別錯誤的原因218
10.5 小結219
第11章優化網絡220
11.1 神經網絡現存的幾個問題221
11.1.1 無法真正模擬人腦221
11.1.2 大樣本訓練緩慢222
11.1.3 深度網絡訓練困難222
11.1.4 梯度消失和爆炸224
11.1.5 白盒問題225
11.2 過擬合問題226
11.2.1 什麼是過擬合226
11.2.2 解決過擬合問題的幾種方法227
11.2.3 正則化228
11.3 怎樣選擇每一層的節點數目230
11.3.1 輸入層和輸出層的節點數目230
11.3.2 隱含層的節點數目230
11.4 如何加速訓練231
11.4.1 採用其他優化算法231
11.4.2 採用GPU訓練232
11.4.3 設置合適的學習率232
11.4.4 在合適的時間停止訓練233
11.5 人工智能的未來發展趨勢233
11.5.1 人工智能的發展現狀233
11.5.2 人工智能的發展趨勢234
11.6 小結234