Python神經(jīng)網(wǎng)絡(luò)入門(mén)與實(shí)戰(zhàn)
本書(shū)從神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)講起,逐步深入到Python進(jìn)階實(shí)戰(zhàn),通過(guò)對(duì)各種實(shí)用的第三方庫(kù)進(jìn)行詳細(xì)講解與實(shí)戰(zhàn)運(yùn)用,讓讀者不但能夠更加深入地了解神經(jīng)網(wǎng)絡(luò),而且能夠簡(jiǎn)單高效地搭建自己的神經(jīng)網(wǎng)絡(luò),即使沒(méi)有專業(yè)背景知識(shí)也能輕松入門(mén)神經(jīng)網(wǎng)絡(luò)。
本書(shū)分為 11章,涵蓋的主要內(nèi)容有神經(jīng)網(wǎng)絡(luò)概述,神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí),計(jì)算機(jī)程序的特點(diǎn),神經(jīng)網(wǎng)絡(luò)優(yōu)化算法,搭 建Python環(huán)境,Python基礎(chǔ)知識(shí),深度學(xué)習(xí)框架PyTorch基礎(chǔ)知識(shí),NumPy簡(jiǎn)介與使用,OpenCV簡(jiǎn)介與使用,OS遍歷文件夾,Python中Matplotlib可視化繪圖,Lenet-5、AlexNet、VGG16網(wǎng)絡(luò)模型,回歸問(wèn)題和分類問(wèn)題,貓狗識(shí)別程序開(kāi)發(fā),驗(yàn)證碼識(shí)別程序開(kāi)發(fā),過(guò)擬合問(wèn)題與解決方法,梯度消失與爆炸,加速神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法,人工智能的未來(lái)發(fā)展趨勢(shì)等。
本書(shū)內(nèi)容通俗易懂,案例豐富,實(shí)用性強(qiáng),特別適合神經(jīng)網(wǎng)絡(luò)的零基礎(chǔ)入門(mén)讀者閱讀,也適合 Python 程序員、PyTorch愛(ài)好者等閱讀。
王凱,西安電子科技大學(xué)人工智能學(xué)院計(jì)算機(jī)專業(yè)研究生,曾參加過(guò)全國(guó)大學(xué)生驗(yàn)證碼識(shí)別大賽并獲得三等獎(jiǎng),長(zhǎng)期從事神經(jīng)網(wǎng)絡(luò)的研究,具有豐富的開(kāi)發(fā)實(shí)踐經(jīng)驗(yàn)。
第1章 神經(jīng)網(wǎng)絡(luò)概述 1
1.1 神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介 2
1.1.1 神經(jīng)網(wǎng)絡(luò)的定義 2
1.1.2 神經(jīng)網(wǎng)絡(luò)可解決的問(wèn)題 3
1.2 神經(jīng)網(wǎng)絡(luò)的靈感來(lái)源 3
1.2.1 對(duì)人類認(rèn)知過(guò)程的傳統(tǒng)認(rèn)知 3
1.2.2 對(duì)人類認(rèn)知過(guò)程的現(xiàn)代認(rèn)知 4
1.2.3 神經(jīng)元連接的靈感 4
1.3 為什么要學(xué)習(xí)神經(jīng)網(wǎng)絡(luò) 4
1.3.1 神經(jīng)網(wǎng)絡(luò)的發(fā)展 4
1.3.2 學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)有什么用 5
1.4 怎樣學(xué)習(xí)神經(jīng)網(wǎng)絡(luò) 6
1.4.1 選擇一門(mén)編程語(yǔ)言 6
1.4.2 對(duì)算法的理解 8
1.4.3 寫(xiě)博客 8
1.5 小結(jié) 9
第2章 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí) 10
2.1 感知器模型 11
2.1.1 神經(jīng)元細(xì)胞的本質(zhì) 11
2.1.2 感知器模型的構(gòu)建 11
2.2 訓(xùn)練感知器 13
2.2.1 計(jì)算誤差 13
2.2.2 誤差反向傳播 13
2.2.3 訓(xùn)練示例 14
2.3 激活函數(shù) 15
2.3.1 激活函數(shù)的定義 16
2.3.2 Sigmoid函數(shù) 16
2.3.3 Tanh函數(shù) 17
2.3.4 ReLU函數(shù) 18
2.4 損失函數(shù) 20
2.4.1 損失函數(shù)的定義及作用 20
2.4.2 絕對(duì)值損失函數(shù) 20
2.4.3 均方差損失函數(shù) 21
2.4.4 交叉熵?fù)p失函數(shù) 23
2.5 單層神經(jīng)網(wǎng)絡(luò) 23
2.5.1 單層神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu) 23
2.5.2 單層神經(jīng)網(wǎng)絡(luò)的參數(shù) 25
2.5.3 單層神經(jīng)網(wǎng)絡(luò)的前向傳播過(guò)程 25
2.6 訓(xùn)練單層神經(jīng)網(wǎng)絡(luò) 26
2.6.1 梯度下降算法 26
2.6.2 反向傳播算法 29
2.6.3 理解反向傳播 31
2.7 多層神經(jīng)網(wǎng)絡(luò) 32
2.7.1 多層神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu) 33
2.7.2 參數(shù)向量化 33
2.8 卷積神經(jīng)網(wǎng)絡(luò) 36
2.8.1 卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介 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 小結(jié) 44
第3章 實(shí)戰(zhàn)前的預(yù)備知識(shí) 46
3.1 計(jì)算機(jī)程序 47
3.1.1 計(jì)算機(jī)程序簡(jiǎn)介 47
3.1.2 計(jì)算機(jī)程序的執(zhí)行過(guò)程 48
3.1.3 計(jì)算機(jī)程序的開(kāi)發(fā)流程 49
3.1.4 計(jì)算機(jī)程序的特點(diǎn) 50
3.2 加速訓(xùn)練 51
3.2.1 CPU與GPU 51
3.2.2 歸一化 52
3.2.3 其他學(xué)習(xí)算法 53
3.2.4 Mini-Batch 54
3.3 構(gòu)建樣本集 55
3.3.1 Tensor類型 55
3.3.2 訓(xùn)練集 56
3.3.3 測(cè)試集 57
3.3.4 交叉驗(yàn)證集 58
3.4 小結(jié) 59
第4章 Python入門(mén)與實(shí)戰(zhàn) 60
4.1 Python簡(jiǎn)介 61
4.1.1 什么是Python 61
4.1.2 Python的特點(diǎn) 61
4.1.3 為什么要用Python搭建神經(jīng)網(wǎng)絡(luò) 62
4.2 搭建Python環(huán)境 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新建項(xiàng)目 70
4.2.5 PyCharm的一些基本設(shè)置 71
4.2.6 PyCharm運(yùn)行程序 73
4.3 Python基礎(chǔ) 74
4.3.1 輸入語(yǔ)句與輸出語(yǔ)句 74
4.3.2 變量的作用與定義 76
4.3.3 變量的命名規(guī)則和習(xí)慣 78
4.3.4 運(yùn)算符 79
4.3.5 數(shù)據(jù)類型 81
4.3.6 if語(yǔ)句 82
4.3.7 循環(huán)語(yǔ)句 83
4.3.8 函數(shù) 85
4.3.9 類 85
4.3.10 列表和元組 87
4.3.11 引入模塊 87
4.3.12 注釋 88
4.4 編寫(xiě)第一個(gè)感知器程序 88
4.4.1 需求分析 88
4.4.2 主程序 89
4.4.3 感知器前向傳播程序 90
4.4.4 誤差計(jì)算程序 91
4.4.5 運(yùn)行結(jié)果 91
4.5 小結(jié) 92
第5章 深度學(xué)習(xí)框架PyTorch入門(mén)與實(shí)戰(zhàn) 93
5.1 PyTorch簡(jiǎn)介 94
5.1.1 什么是PyTorch 94
5.1.2 PyTorch的特點(diǎn) 94
5.1.3 為什么要選擇PyTorch搭建神經(jīng)網(wǎng)絡(luò) 95
5.2 安裝PyTorch框架 95
5.2.1 conda命令 96
5.2.2 選擇PyTorch版本進(jìn)行安裝 97
5.3 PyTorch基礎(chǔ) 99
5.3.1 構(gòu)建輸入/輸出 99
5.3.2 構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu) 100
5.3.3 定義優(yōu)化器與損失函數(shù) 102
5.3.4 保存和加載網(wǎng)絡(luò) 103
5.4 小實(shí)戰(zhàn):用PyTorch搭建一個(gè)神經(jīng)網(wǎng)絡(luò)以學(xué)習(xí)異或運(yùn)算 104
5.4.1 需求分析 104
5.4.2 訓(xùn)練程序 105
5.4.3 測(cè)試程序 107
5.5 小結(jié) 109
第6章 Python搭建神經(jīng)網(wǎng)絡(luò)進(jìn)階 110
6.1 NumPy簡(jiǎn)介 111
6.1.1 NumPy的基本功能 111
6.1.2 NumPy的數(shù)據(jù)類型 111
6.2 NumPy的使用 112
6.2.1 安裝NumPy 112
6.2.2 創(chuàng)建數(shù)組 112
6.2.3 存儲(chǔ)和讀取數(shù)組 114
6.2.4 索引和切片 115
6.2.5 重塑數(shù)組 116
6.2.6 數(shù)組的運(yùn)算 117
6.3 OpenCV簡(jiǎn)介 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 色彩空間轉(zhuǎn)換 123
6.4.5 直方圖均衡化 125
6.4.6 圖像保存 126
6.5 文件夾中文件的遍歷 127
6.5.1 OS模塊簡(jiǎn)介 128
6.5.2 path模塊 128
6.5.3 刪除文件 129
6.5.4 創(chuàng)建文件夾 129
6.5.5 文件遍歷 130
6.6 構(gòu)建和讀取數(shù)據(jù)集 132
6.6.1 構(gòu)建數(shù)據(jù)集 132
6.6.2 讀取數(shù)據(jù)集 135
6.7 PyTorch中卷積神經(jīng)網(wǎng)絡(luò)有關(guān)的接口 136
6.7.1 卷積層接口 136
6.7.2 反卷積層接口 137
6.8 小結(jié) 137
第7章 實(shí)戰(zhàn)1:回歸問(wèn)題和分類問(wèn)題 139
7.1 Python中繪圖方法簡(jiǎn)介 140
7.1.1 Matplotlib簡(jiǎn)介 140
7.1.2 安裝Matplotlib 140
7.1.3 散點(diǎn)圖繪制 141
7.1.4 繪圖顯示的小設(shè)置 144
7.1.5 曲線繪制 145
7.1.6 設(shè)置坐標(biāo)軸 146
7.1.7 動(dòng)態(tài)繪圖 148
7.2 回歸問(wèn)題 149
7.3 用Python搭建一個(gè)解決回歸問(wèn)題的神經(jīng)網(wǎng)絡(luò) 151
7.3.1 準(zhǔn)備工作 151
7.3.2 構(gòu)建網(wǎng)絡(luò) 152
7.3.3 訓(xùn)練網(wǎng)絡(luò) 153
7.3.4 完整程序 154
7.4 分類問(wèn)題 155
7.5 用Python搭建一個(gè)解決分類問(wèn)題的神經(jīng)網(wǎng)絡(luò) 156
7.5.1 準(zhǔn)備工作 156
7.5.2 構(gòu)建網(wǎng)絡(luò) 159
7.5.3 訓(xùn)練網(wǎng)絡(luò) 160
7.5.4 可視化 161
7.5.5 完整程序 162
7.6 小結(jié) 164
第8章 實(shí)戰(zhàn)2:貓狗識(shí)別問(wèn)題 165
8.1 實(shí)戰(zhàn)目標(biāo) 166
8.1.1 目標(biāo)分析 166
8.1.2 樣本集 167
8.2 實(shí)現(xiàn)思路 167
8.2.1 構(gòu)建樣本集 168
8.2.2 測(cè)試樣本集 169
8.2.3 構(gòu)建網(wǎng)絡(luò) 170
8.2.4 訓(xùn)練網(wǎng)絡(luò) 171
8.2.5 測(cè)試網(wǎng)絡(luò) 172
8.3 完整程序及運(yùn)行結(jié)果 172
8.3.1 構(gòu)建樣本集程序 172
8.3.2 測(cè)試樣本集程序 174
8.3.3 構(gòu)建網(wǎng)絡(luò)程序 175
8.3.4 訓(xùn)練網(wǎng)絡(luò)程序 177
8.3.5 可視化訓(xùn)練過(guò)程 179
8.3.6 測(cè)試網(wǎng)絡(luò)程序 180
8.3.7 模擬實(shí)際運(yùn)用 181
8.4 對(duì)結(jié)果的思考 182
8.4.1 訓(xùn)練集和測(cè)試集準(zhǔn)確率的對(duì)比 182
8.4.2 準(zhǔn)確率低的原因 183
8.4.3 訓(xùn)練過(guò)程的啟示 184
8.5 小結(jié) 184
第9章 一些經(jīng)典的網(wǎng)絡(luò) 185
9.1 LeNet-5網(wǎng)絡(luò)模型 186
9.1.1 LeNet-5網(wǎng)絡(luò)簡(jiǎn)介 186
9.1.2 LeNet-5網(wǎng)絡(luò)結(jié)構(gòu) 186
9.1.3 三維卷積 188
9.1.4 多維卷積 190
9.1.5 LeNet-5代碼實(shí)現(xiàn) 191
9.2 AlexNet網(wǎng)絡(luò)模型 192
9.2.1 AlexNet網(wǎng)絡(luò)簡(jiǎn)介 193
9.2.2 AlexNet網(wǎng)絡(luò)結(jié)構(gòu) 193
9.2.3 Same卷積 194
9.2.4 Softmax分類器 196
9.2.5 AlexNet代碼實(shí)現(xiàn) 197
9.3 VGG16網(wǎng)絡(luò)模型 198
9.3.1 VGG16網(wǎng)絡(luò)簡(jiǎn)介 198
9.3.2 VGG16網(wǎng)絡(luò)結(jié)構(gòu) 198
9.4 小結(jié) 200
第10章 實(shí)戰(zhàn)3:驗(yàn)證碼識(shí)別問(wèn)題 201
第11章 優(yōu)化網(wǎng)絡(luò) 220