-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
無Python神經網絡入門與實戰 版權信息
- ISBN:9787301316290
- 條形碼:9787301316290 ; 978-7-301-31629-0
- 裝幀:70g膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
無Python神經網絡入門與實戰 本書特色
精通神經網絡就這三步:1.零基礎入門神經網絡——2.進階掌握神經網絡——3.實戰搭建屬于自己的神經網絡
無Python神經網絡入門與實戰 內容簡介
本書從神經網絡的基礎知識講起,逐步深入到Python進階實戰,通過對各種實用的第三方庫進行詳細講解與實戰運用,讓讀者不但能夠更加深入地了解神經網絡,而且能夠簡單高效地搭建自己的神經網絡,即使沒有專業背景知識也能輕松入門神經網絡。 本書分為 11章,涵蓋的主要內容有神經網絡概述,神經網絡基礎知識,計算機程序的特點,神經網絡優化算法,搭 建Python環境,Python基礎知識,深度學習框架PyTorch基礎知識,NumPy簡介與使用,OpenCV簡介與使用,OS遍歷文件夾,Python中Matplotlib可視化繪圖,Lenet-5、AlexNet、VGG16網絡模型,回歸問題和分類問題,貓狗識別程序開發,驗證碼識別程序開發,過擬合問題與解決方法,梯度消失與爆炸,加速神經網絡訓練的方法,人工智能的未來發展趨勢等。 本書內容通俗易懂,案例豐富,實用性強,特別適合神經網絡的零基礎入門讀者閱讀,也適合 Python 程序員、PyTorch愛好者等閱讀。
無Python神經網絡入門與實戰 目錄
第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
無Python神經網絡入門與實戰 節選
第1章 神經網絡概述 1.1 神經網絡簡介 隨著信息時代的快速發展,人工智能逐漸走進了大眾的視野,而與之緊密相關的神經網絡(Neural Networks,NN)也漸漸被越來越多的人所了解。那么,什么是神經網絡呢? 1.1.1 神經網絡的定義 神經網絡的定義有許多種,拋開數學公式和圖形,一種比較概括性的定義可能為:神經網絡是一種能夠模仿人類的認知過程的數學模型。為了與生物神經網絡相區分,神經網絡又稱為人工神經網絡(Artificial Neural Networks,ANN),其本質是一種數學算法,其模擬人類認知的過程其實也就是進行一系列數學運算的過程。人腦神經網絡如圖1.1所示,它是一種極其復雜的結構,甚至在如今這個科學技術飛速發展的時代里,人腦中的奧秘還不能被科學家完全所知。但是,人工智能的發展卻帶來了簡單但功能十分強大的人工神經網絡結構,如圖1.2所示。雖然人工神經網絡相比人腦而言過于簡單,但是其強大的應用其實正在你我的身邊發生。 圖1.1 人腦神經網絡 圖1.2 人工神經網絡結構 1.1.2 神經網絡可解決的問題 *新的發展成果表明,神經網絡解決某些問題上的能力已經超過了人類。例如,AlphaGo已經戰勝了人類成為地球上*厲害的圍棋選手;Geoff Hinton發明的膠囊網絡在識別玩具上的能力已經超越了人類的識別能力;谷歌的研究人員用一種深度學習的方法訓練他們的網絡玩電子游戲,訓練兩個小時后,計算機就成為游戲專家,且在之后大多數的游戲中,深度學習網絡已經勝過有經驗的玩家。再如,近年來發展十分火熱的自動駕駛、人臉識別等技術都與神經網絡有關,手機中的垃圾短信或垃圾郵件過濾功能也是通過神經網絡實現的,語言識別、垃圾分類識別器等都可以運用神經網絡模型輕松實現。 通過比較簡單而系統的學習,每個人都可以很好地掌握神經網絡的基礎知識并用它去解決兩類問題:回歸問題和分類問題,解決回歸問題時神經網絡甚至可以用來預測股價及房價(還不能用來炒股)。當然,本書的目的不是教讀者如何預測股價,而是想讓讀者系統地了解神經網絡基礎的方方面面,能夠運用它去做一些有趣的事情。 1.2 神經網絡的靈感來源 對神經網絡的整體概念有了基本了解之后,本節討論科學家們是如何想到構建這樣一種功能強大的人工模型的。 1.2.1 對人類認知過程的傳統認知 人工神經網絡模擬的其實是人腦的學習過程,而人腦的學習過程實際上可以看作神經元之間的連接、信息傳遞的過程。其實,在很長一段時間里,人們對人腦中的神經細胞的工作方式并不熟悉。 人們起初認為,我們所擁有的視覺、觸覺、味覺等都是因為感受器官同人腦中特定的感受細胞相連所形成的。如圖1.3所示,人們普遍認為,眼睛與視覺中樞通過某種方式相連接,眼睛作為視覺的感受器,在感受到了視覺信號之后,將信號傳到視覺中樞,我們才會形成視覺;如果將眼睛連接到了味覺中樞、語言中樞等其他感受外界刺激的神經網絡區域,我們便不會產生視覺。這種理論的主要觀點在于,相應的感受器必須要與人腦中相應的感受細胞相連接才會正常工作,從而形成相應的感覺。 1.2.2 對人類認知過程的現代認知 人們對人類感知過程的傳統認知雖然狹隘,但卻持續了很長時間。直到有一些善于思考和反駁的人開始發問:如果把其他器官也連接到視覺中樞上(圖1.4),會發生什么呢? 實際上,歷史上確實有人做過這樣的實驗,實驗的具體過程在這里不做重點講解,我們主要關心*后的結果。實驗得到的結果是,如果把鼻子連接到視覺中樞,也可以通過視覺中樞和鼻子共同工作產生嗅覺;類似地,把嘴巴連接到視覺中樞,也同樣會產生味覺。這就啟示我們,視覺中樞并不是一些特殊的僅僅能夠產生視覺的人腦神經細胞,而是一些具有一定普遍性的人腦細胞。視覺形成的關鍵在于,眼睛傳入了視覺信號,視覺中樞中具有一定普遍性的神經元在接收到信號以后,開始其連接活動,將信號進行處理后產生視覺。神經細胞的這種工作機制,就決定了我們可以創造一個模型——神經網絡。 1.2.3 神經元連接的靈感 人工智能在發展之初就分出一門學派——連接主義學派,該學派認為人工智能起源于仿生學,特別是人腦模型,人類認知的基元是神經元,認知過程是神經元的連接過程。 隨著科學家對人類認知過程的理解不斷加深,人們逐漸發現神經元的連接過程可以模擬出人腦的某些功能。這一過程給研究人員帶來了靈感,驅使著人類著手建立人工的基元及人工的連接,并且通過簡單的連接就可以模擬出人腦的學習功能。 1.3 為什么要學習神經網絡 在了解了神經網絡的定義和靈感來源之后,本節簡單介紹神經網絡的發展歷史,然后討論使用神經網絡解決問題的必要性。 1.3.1 神經網絡的發展 其實,神經網絡并不是近幾年新出現的詞語,而是一個“由來已久”的詞了。早在 1943年,心理學家沃倫·麥卡洛克(Warren McCulloch)和數理邏輯學家沃爾特·皮茨(Walter Pitts)在合作的A logical calculus of the ideas immanent in nervous activity論文中就已經給出了人工神經網絡的*初概念及人工神經元的數學模型,從而開創了人工神經網絡研究的時代。而后又有許多研究學者提出了不同的學習模型,但那時的神經網絡大部分只有簡單的單層結構,所以被稱為“**代神經網絡”。雖然**代神經網絡模型比較簡單,但是它已經能夠對簡單的形狀(如三角形、矩形、菱形等)進行分類,人們逐漸認識到使用機器實現像人類一樣感覺、學習、記憶、識別已經成為一種趨勢。 到了1985年,杰弗里·辛頓(Geoffrey Hinton)使用多個隱含層來代替感知機中原先的單個特征層,并使用BP算法(Back-propagation algorithm,proposed in 1969,practicable in 1974)來計算網絡參數。1989年,雅恩·樂庫(Yann LeCun)等人使用深度神經網絡來識別信件中郵編的手寫體字符。1998年,LeCun進一步運用CNN(Convolutional Noural Networks,卷積神經網絡)完成了銀行支票的手寫體字符識別,識別正確率達到商用級別。 盡管神經網絡在20世紀90年代末就已經得到了很好的發展,并且水平也已經能夠達到商用級別,但是在之后的一段時間內,神經網絡似乎并沒有得到更高層次的發展。筆者認為在這其中,計算機的算力起到了很大的限制作用。那時的計算機發展還不是很成熟,計算機運算速度并不是很快,有時訓練一個神經網絡需要幾天甚至幾個月才能得到一次結果,而且如果得到的結果不理想,就需要再耗費同樣的時間去重新訓練,這不僅限制了個人開發神經網絡模型,更限制了整個行業的發展。 *近幾年,隨著計算機技術突飛猛進的發展,神經網絡的發展也被重新“喚醒”,并成為人工智能領域中*有效的模型之一。目前人工智能在某些特定的領域已經有很好的性能,可以解決特定的問題,甚至解決某些特定問題的能力已經遠遠超過人類。 1.3.2 學習神經網絡有什么用 人工智能目前所面臨的*大的問題就是,它并不能像人類的大腦一樣,很輕松地感知和學習周圍環境的一切事物。目前所發展的人工智能技術,從某種意義上來說,可以被定義為“偽人工智能”。 假設你設計了一個計算機視覺的人工智能程序,讓它去識別一些特定的圖像,結果可能會比我們的肉眼的識別效果要好;但是如果讓它去識別語音,它可能完全不能理解語音信號所代表的含義;蛟S你會說,我可以將訓練好的識別圖像的神經網絡和識別語音的神經網絡組合在一起使用,這樣人工智能程序不就可以既能看懂圖像,又能聽懂聲音了?實際上,現在的一些人工智能產品確實就是這樣做的,但即使有再多的功能進行組合使用,人工智能程序還是脫離不了“偽人工智能”的嫌疑,因為它們之間并沒有建設性的連接,每個功能都是通過單獨的神經網絡來實現的。換句話說,如果讓人工智能程序去參加高考,恐怕它會“無從下手”。 能夠實現真正具有人類的某些感知和學習功能的人工智能一直都是一件令人著迷的事情,但是能做出一個真真正正具有人的思維的人工智能可能對研究人員來說更加具有吸引力,而這也是我們要學習神經網絡的原因之一。未來可能會是一個充滿人工智能的時代,神經網絡是通向人工智能殿堂的階梯,如果我們能夠登上這個階梯,便能體會到其中的奧秘與樂趣,甚至可以開創一個全新的時代。 以上是從一些宏觀的角度來剖析學習神經網絡的重要性。從現實的角度來看,人工智能行業在近幾年的發展十分迅速且異;鸨,許多科技巨頭公司爭先恐后地發展自己的人工智能技術,如華為、阿里、百度等都已經研發出了自己的人工智能產品。人工智能的火爆也帶來了大量的人工智能就業崗位,所以現在無論是國內還是國外,整個行業都十分需要人工智能方面的人才。如果能夠掌握人工智能領域的有關智能算法,在今后的求職過程中也能找到一份待遇優厚的工作,并且能在崗位上繼續推動人工智能領域的發展。
無Python神經網絡入門與實戰 作者簡介
王凱,西安電子科技大學人工智能學院計算機專業研究生,曾參加過全國大學生驗證碼識別大賽并獲得三等獎,長期從事神經網絡的研究,具有豐富的開發實踐經驗。
- >
姑媽的寶刀
- >
經典常談
- >
煙與鏡
- >
名家帶你讀魯迅:朝花夕拾
- >
中國歷史的瞬間
- >
伊索寓言-世界文學名著典藏-全譯本
- >
苦雨齋序跋文-周作人自編集
- >
企鵝口袋書系列·偉大的思想20:論自然選擇(英漢雙語)