本書共分8章,內容包括深度學習基礎、深度學習框架PyTorch的安裝、PyTorch基礎、線性回歸和邏輯回歸、全連接神經網絡、卷積神經網絡、循環神經網絡及生成式對抗網絡。本書首先從深度學習基礎知識入手,引領讀者動手搭建深度學習框架PyTorch,然后在PyTorch框架下實現深度學習中常用的網絡模型。通過本書,讀者可對深度學習有一個清晰的認識。本書中的程序均可在Windows系統中運行,不受是否具備GPU的限制。本書提供電子課件、源代碼,讀者可登錄“華信教育資源網”(www.hxedu.com.cn)免費下載。書中每章都配有習題和實驗,最后還附有參考答案。本書可作為高等學校本科數據科學與大數據、人工智能、機器人工程等專業深度學習相關課程的教材,也適合廣大對深度學習有興趣的讀者自學使用。
前 言
深度學習課程選擇什么樣的教材?這是近年來困擾任課教師的一個難題。作為高校數據科學與大數據專業的一線教師,我希望得到這樣一本教材:
? 既有理論知識,又有豐富的實例,能讓學生動手實踐。
教材能夠用簡單易懂的語言告訴學生什么是深度學習,讓學生理解深度學習中神經元、神經網絡、激勵函數、損失函數等基本概念,了解深度學習與人工智能、機器學習的關系。
? 介紹一種深度學習框架。
學生在這種框架下能夠動手實現如卷積神經網絡、循環神經網絡、生成式對抗網絡等常見的網絡模型。
? 不涉及太多、太難的數學知識。
教材能夠把深度學習的相關原理講清楚,但不要變成一本“數學書”,可適應應用型本科學校的教學內容。
? 能滿足實驗課需求。
在教材中能夠找到合適的、能布置給學生的實驗內容。此外,在學校機房只有Windows系統、沒有GPU的環境下,只需進行簡單的軟件安裝,就能完成深度學習的實驗。
? 具有完整的教學資源,包括電子課件、習題、實驗、源代碼、習題解答。
教師可以根據電子課件準備上課內容,可以從習題、實驗中方便地獲得課后作業、期末考試的素材,不用一切從零開始。
以上要求本書全都滿足。本書共分8章,內容包括深度學習基礎、深度學習框架PyTorch的安裝、PyTorch基礎、線性回歸和邏輯回歸、全連接神經網絡、卷積神經網絡、循環神經網絡及生成式對抗網絡。
通過本書,讀者可對深度學習有一個清晰的認識,能夠在PyTorch框架下實現常見的網絡模型。本書全部代碼分別在有GPU的服務器上和沒有GPU的普通計算機上調試通過,其運行環境為Windows 10操作系統,軟件版本為Python 3.5.3、PyTorch 0.4。本書提供電子課件、源代碼,讀者可登錄“華信教育資源網”(www.hxedu.com.cn)免費下載。
本書能夠快速成稿,離不開我的兩名學生曲榮峰和肖玉林的協助,他們幫助我完成了書中圖、公式、程序的校驗工作,在此表示感謝!特別感謝電子工業出版社的楊寰編輯、劉瑀編輯對本書的出版提供的大力支持。
由于時間倉促和水平有限,書中難免有不妥之處,歡迎廣大讀者提出寶貴意見。作者聯系郵箱:wuwei529@163.com。
編 者
目 錄
第1章 深度學習基礎 1
1.1 人工智能、機器學習與深度學習 1
1.1.1 人工智能簡介 1
1.1.2 機器學習簡介 2
1.1.3 深度學習簡介 3
1.2 深度學習的三大核心要素 4
1.3 神經元與深度神經網絡 7
1.4 神經網絡中常用的激勵函數 9
1.5 深度學習的優勢 13
1.6 常用的深度學習框架 15
本章小結 16
習題 16
第2章 深度學習框架PyTorch的安裝 19
2.1 PyTorch介紹 19
2.2 Windows系統中PyTorch的配置 20
2.2.1 安裝Python 20
2.2.2 PyTorch環境搭建 21
2.3 Linux系統中PyTorch的配置 22
2.3.1 安裝虛擬機 23
2.3.2 Python環境配置 25
2.3.3 PyTorch環境搭建 25
2.4 PyTorch開發工具 26
2.4.1 IDLE 26
2.4.2 PyCharm 27
本章小結 34
習題 34
實驗 35
第3章 PyTorch基礎 36
3.1 Tensor的定義 36
3.2 Tensor的創建 37
3.3 Tensor的形狀調整 39
3.4 Tensor的簡單運算 40
3.5 Tensor的比較 41
3.6 Tensor的數理統計 42
3.7 Tensor與NumPy的互相轉換 43
3.8 Tensor的降維和增維 44
3.9 Tensor的裁剪 46
3.10 Tensor的索引 46
3.11 把Tensor移到GPU上 48
本章小結 49
習題 49
實驗 50
第4章 線性回歸和邏輯回歸 54
4.1 回歸 54
4.2 線性回歸 55
4.3 一元線性回歸的代碼實現 58
4.4 梯度及梯度下降法 62
4.4.1 梯度 62
4.4.2 梯度下降法 62
4.5 多元線性回歸的代碼實現 63
4.6 邏輯回歸 65
4.6.1 邏輯回歸 65
4.6.2 邏輯回歸中的損失函數 66
4.6.3 邏輯回歸的代碼實現 66
本章小結 69
習題 69
實驗 70
第5章 全連接神經網絡 72
5.1 全連接神經網絡概述 72
5.2 多分類問題 73
5.3 Softmax函數與交叉熵 74
5.4 反向傳播算法 76
5.4.1 鏈式求導法則 76
5.4.2 反向傳播算法實例 77
5.4.3 Sigmoid函數實例 77
5.5 計算機視覺工具包torchvision 78
5.6 全連接神經網絡實現多分類 80
5.6.1 定義全連接神經網絡 80
5.6.2 全連接神經網絡識別MNIST手寫數字 81
本章小結 85
習題 85
實驗 87
第6章 卷積神經網絡 88
6.1 前饋神經網絡 88
6.2 卷積神經網絡的原理 89
6.2.1 卷積層 91
6.2.2 池化層 94
6.3 卷積神經網絡的代碼實現 96
6.4 LeNet-5模型 99
6.4.1 LeNet-5模型的架構 99
6.4.2 CIFAR 10數據集 101
6.4.3 LeNet-5模型的代碼實現 101
6.5 VGGNet模型 106
6.5.1 VGGNet模型簡介 106
6.5.2 VGGNet模型的代碼實現 107
6.6 ResNet模型 112
6.6.1 ResNet模型簡介 112
6.6.2 ResNet模型殘差學習單元的代碼實現 113
本章小結 114
習題 114
實驗 115
第7章 循環神經網絡 119
7.1 循環神經網絡概述 119
7.2 循環神經網絡的原理 120
7.3 長短時記憶神經網絡 122
7.3.1 長短時記憶神經網絡的原理 122
7.3.2 長短時記憶神經網絡實例1 125
7.3.3 長短時記憶神經網絡實例2 129
本章小結 136
習題 136
實驗 137
第8章 生成式對抗網絡 138
8.1 生成式對抗網絡概述 138
8.1.1 生成式對抗網絡的原理 138
8.1.2 生成式對抗網絡的代碼實現 142
8.2 條件生成式對抗網絡 150
8.3 最小二乘生成式對抗網絡 151
本章小結 151
習題 151
實驗 152
附錄A 部分習題與實驗參考答案 153
A.1 第1章習題與實驗參考答案 153
A.2 第2章習題與實驗參考答案 155
A.2.1 習題參考答案 155
A.2.2 實驗參考答案 156
A.3 第3章習題與實驗參考答案 156
A.3.1 習題參考答案 156
A.3.2 實驗參考答案 156
A.4 第4章習題與實驗參考答案 166
A.4.1 習題參考答案 166
A.4.2 實驗參考答案 167
A.5 第5章習題與實驗參考答案 175
A.5.1 習題參考答案 175
A.5.2 實驗參考答案 175
A.6 第6章習題與實驗參考答案 178
A.6.1 習題參考答案 178
A.6.2 實驗參考答案 179
A.7 第7章習題與實驗參考答案 192
A.7.1 習題參考答案 192
A.7.2 實驗參考答案 193
A.8 第8章習題與實驗參考答案 196
A.8.1 習題參考答案 196
A.8.2 實驗參考答案 197
參考文獻 212