《細說機器學習:從理論到實踐》從數學知識入手,詳盡細致地闡述機器學習各方面的理論知識、常用算法與流行框架,并以大量代碼示例進行實踐。本書內容分為三篇:篇為基礎知識,包括機器學習概述、開發(fā)環(huán)境和常用模塊、特征工程、模型評估、降維方法等內容。本篇詳細而友好地介紹機器學習的核心概念與原理,并結合大量示例幫助讀者輕松入門。第二篇為算法應用,涵蓋機器學習重要與高頻使用的模型,包括K-Means聚類、K近鄰、回歸、決策樹、樸素貝葉斯、支持向量機、神經網絡等內容。本篇不僅詳細講解各個算法的原理,還提供大量注釋詳盡的代碼示例,使這些算法變得直觀易懂。第三篇為拓展應用,包括集成學習、深度學習框架TensorFlow與PyTorch入門、卷積網絡、激活函數以及模型微調與項目實戰(zhàn)。本篇內容更加前沿與高級,帶領讀者跨過機器學習的門檻,進行真實項目的實踐與部署。 《細說機器學習:從理論到實踐》內容豐富、系統(tǒng)且實用,大量相關代碼示例貼近實戰(zhàn),能夠為讀者學習機器學習打下扎實的基礎,并真正掌握運用這些知識與算法解決實際問題的技能。適合機器學習入門者、大學生、人工智能從業(yè)者,以及各行業(yè)技術人員和科研人員使用,也可作為培訓機構和大專院校人工智能課程的教學用書。
《細說機器學習:從理論到實踐》是一個詳細介紹現代機器學習理論、經典算法與流行框架及編程實現的機器學習入門書。
從統(tǒng)計學、線性代數與概率論等機器學習的基礎知識講起,然后介紹機器學習的基本概念,繼 而講解常用算法與編程實現,最后介紹高級知識、框架實踐與項目案例,兼顧理論與應用,詳 盡易懂。
每個知識點配合示例練習,全書共設計200多個編程實例,向讀者展示機器學習算法與框架的實際應用。
全書涉及面廣,如神經網絡、卷積網絡、集成學習、遷移學習等當前機器學習熱點均有所涉及 。
結合作者多年機器學習研究與開發(fā)經驗,采用流行的Python語言實現,講解細致,娓娓道來, 適合轉型想進入人工智能領域的大學生、開發(fā)人員、技術人員和研究人員閱讀。
前 言
21世紀大國之間的競爭歸根結底是人才的競爭,人工智能作為目前促進產業(yè)升級的關鍵技術,在學術界和工業(yè)界都有廣泛的應用,被國家提高到了戰(zhàn)略高度。廣大國民掌握人工智能技術將極大地促進生產力發(fā)展,提升國家綜合競爭力,為國家發(fā)展做出技術上的貢獻。出于這樣的思考,本書為有志于在21世紀從事人工智能事業(yè)的讀者編寫,希望通過本書為促進國家人工智能技術的進步做出微薄貢獻。
眾所周知,在國家層面,人工智能技術已經成為社會經濟發(fā)展的新引擎,該技術已經被應用于人們日常生活的方方面面。PyTorch是實現人工智能的重要技術途徑之一,學好PyTorch將十分有利于掌握人工智能技術。
人工智能技術作為新一輪產業(yè)變革的核心驅動技術,將進一步釋放歷次科技革命和產業(yè)變革積蓄的巨大勢能,進一步促進經濟巨大發(fā)展,形成宏觀經濟、微觀經濟等領域的社會智能化新需求,激發(fā)新技術、新產品、新產業(yè)、新業(yè)態(tài)、新模式不斷涌現,引發(fā)社會經濟結構重大變革,深刻改變國民日常生產生活方式和經濟社會生活思維模式,實現國家生產力的跨越提升。
我國經濟社會發(fā)展已經進入了新階段,實現共同富裕已經成為當前主要的社會發(fā)展目標和任務,需要加快人工智能應用于實體經濟產業(yè)領域,提升人工智能技術產業(yè)化水平,為我國社會發(fā)展注入強大的技術支持和核心科技
動力。
隨著我國社會發(fā)展和工業(yè)升級的需求,人工智能技術人才需求越來越大,但是由于人工智能技術是一門交叉學科,涉及的基礎知識繁雜,因此不易入門和學習。為了降低人工智能技術的入門門檻,本書從理論出發(fā),結合實例,盡量用簡單易懂的語言講述高深的知識點,為有志于從事基于PyTorch進行人工智能開發(fā)的從業(yè)者提供一本好的PyTorch技術參考書。
本書內容
本書結合多年PyTorch使用經驗與實際工程應用案例,將PyTorch的編程方法與技巧詳細地講解給讀者。本書在講解過程中步驟詳盡、內容新穎,輔以相應的圖示,使讀者在閱讀時能一目了然,從而快速掌握書中所講的內容。
第一篇為基礎知識,包括以下章節(jié):
第1章 人工智能和PyTorch 第2章 開發(fā)環(huán)境
第3章 PyTorch入門 第4章 卷積網絡
第5章 經典神經網絡 第6章 模型的保存和調用
第7章 網絡可視化 第8章 數據加載和預處理
第9章 數據增強
第二篇為高級應用,包括以下章節(jié):
第10章 圖像分類 第11章 遷移學習
第12章 人臉檢測和識別 第13章 生成對抗網絡
第14章 目標檢測 第15章 圖像風格遷移
第16章 ViT
本書特點
本書由資深業(yè)界專家精心編寫,內容涵蓋PyTorch的基礎知識、經典算法、模型訓練及編程實現。
從PyTorch的安裝與基本知識開始,首先介紹和深度學習相關的庫NumPy和Matplotlib、Scikit-Learn,然后逐步深入細致地講解各個知識點,確保讀者可以快速上手。
基礎理論結合熱點應用,比如,介紹了PyTorch在經典的神經網絡、卷積網絡、模型調用和保存、數據可視化、數據增強等方面的編程實現,介紹了PyTorch在人臉識別、生成對抗網絡、圖像分類、目標檢測、遷移學習中的應用以及前沿技術熱點Vit等。
每個知識點在講解的過程中,配套大量示例,全書涉及100多個編程實例,向讀者展示PyTorch在深度學習中的應用。
讀者對象
本書適合PyTorch初學者和期望應用PyTorch技術進行機器學習開發(fā)的讀者,具體說明如下:
初學PyTorch的技術人員
廣大從事深度學習的科研工作人員
大、中專院校的教師和學生
相關培訓機構的教師和學員
剛參加工作實習的深度學習菜鳥
PyTorch深度學習技術愛好者
源碼下載
本書提供了程序源代碼,讀者可掃描下面的二維碼,按掃描后的頁面提示填寫你的郵箱,把下載鏈接轉發(fā)到郵箱中下載。如果下載有問題或閱讀中發(fā)現問題,請用電子郵件聯(lián)系booksaga@126.com,郵件主題寫細說PyTorch深度學習:理論、算法、模型與編程實現。
讀者服務
為了方便解決本書的疑難問題,讀者朋友在學習過程中遇到與本書有關的技術問題,可以關注算法仿真公眾號獲取幫助,我們將竭誠為您 服務。
本書由凌峰、丁麒文編著,雖然作者在本書的編寫過程中力求敘述準確、完善,但由于水平有限,書中疏漏之處在所難免,希望廣大讀者和同仁及時指出,共同促進本書質量的提高。
最后,再次希望本書能為讀者的學習和工作提供幫助!
編者
2023年3月
凌峰,畢業(yè)于中國科學院大學,博士,高級職稱,從事機器學習、計算機視覺、圖像處理、人 工智能研究與開發(fā)工作多年,擁有豐富的機器學習算法實現經驗,一個低調潛心研究技術的高手。
目 錄
第1篇 基礎知識
第1章 人工智能和PyTorch2
1.1 人工智能和深度學習2
1.1.1 人工智能2
1.1.2 深度學習3
1.2 深度學習框架5
1.3 PyTorch7
1.3.1 PyTorch簡介7
1.3.2 PyTorch的應用領域9
1.3.3 PyTorch的應用前景10
1.4 小結12
第2章 開發(fā)環(huán)境13
2.1 PyTorch的安裝13
2.2 NumPy16
2.2.1 NumPy的安裝與查看17
2.2.2 NumPy對象17
2.2.3 數組21
2.2.4 數學計算26
2.3 Matplotlib32
2.3.1 Matplotlib的安裝和簡介33
2.3.2 Matplotlib Figure圖形對象35
2.4 Scikit-Learn47
2.5 小結48
第3章 PyTorch入門49
3.1 PyTorch的模塊49
3.1.1 主要模塊49
3.1.2 輔助模塊53
3.2 張量54
3.2.1 張量的數據類型55
3.2.2 創(chuàng)建張量56
3.2.3 張量存儲61
3.2.4 維度操作63
3.2.5 索引和切片65
3.2.6 張量運算67
3.3 torch.nn模塊76
3.3.1 卷積層76
3.3.2 池化層80
3.3.3 激活層87
3.3.4 全連接層91
3.4 自動求導92
3.5 小結95
第4章 卷積網絡96
4.1 卷積網絡的原理96
4.1.1 卷積運算96
4.1.2 卷積網絡與深度學習98
4.2 NumPy建立神經網絡99
4.3 PyTorch建立神經網絡101
4.3.1 建立兩層神經網絡101
4.3.2 神經網絡參數更新102
4.3.3 自定義PyTorch的nn模塊103
4.3.4 權重共享105
4.4 全連接網絡107
4.5 小結111
第5章 經典神經網絡112
5.1 VGGNet112
5.1.1 VGGNet的結構112
5.1.2 實現過程114
5.1.3 VGGNet的特點115
5.1.4 查看PyTorch網絡結構116
5.2 ResNet118
5.2.1 ResNet的結構118
5.2.2 殘差模塊的實現120
5.2.3 ResNet的實現122
5.2.4 ResNet要解決的問題126
5.3 XceptionNet128
5.3.1 XceptionNet的結構128
5.3.2 XceptionNet的實現131
5.4 小結135
第6章 模型的保存和調用136
6.1 字典狀態(tài)(state_dict)136
6.2 保存和加載模型138
6.2.1 使用ate_dict加載模型138
6.2.2 保存和加載完整模型139
6.2.3 保存和加載Checkpoint用于推理、繼續(xù)訓練139
6.3 一個文件保存多個模型140
6.4 通過設備保存和加載模型141
6.5 小結143
第7章 網絡可視化144
7.1 HiddenLayer可視化144
7.2 PyTorchViz可視化146
7.3 TensorboardX可視化149
7.3.1 簡介和安裝149
7.3.2 使用TensorboardX150
7.3.3 添加數字151
7.3.4 添加圖片152
7.3.5 添加直方圖153
7.3.6 添加嵌入向量154
7.4 小結156
第8章 數據加載和預處理157
8.1 加載PyTorch庫數據集157
8.2 加載自定義數據集159
8.2.1 下載并查看數據集159
8.2.2 定義數據集類161
8.3 預處理164
8.4 小結168
第9章 數據增強169
9.1 數據增強的概念169
9.1.1 常見的數據增強方法170
9.1.2 常用的數據增強庫171
9.2 數據增強的實現172
9.2.1 中心裁剪173
9.2.2 隨機裁剪174
9.2.3 縮放175
9.2.4 水平翻轉176
9.2.5 垂直翻轉177
9.2.6 隨機角度旋轉178
9.2.7 色度、亮度、飽和度、對比度的變化179
9.2.8 隨機灰度化180
9.2.9 將圖形加上padding181
9.2.10 指定區(qū)域擦除182
9.2.11 伽馬變換183
9.3 小結184
第2篇 高級應用
第10章 圖像分類186
10.1 CIFAR10數據分類186
10.1.1 定義網絡訓練數據187
10.1.2 驗證訓練結果192
10.2 數據集劃分193
10.3 貓狗分類實戰(zhàn)195
10.3.1 貓狗數據預處理195
10.3.2 建立網絡貓狗分類196
10.4 小結199
第11章 遷移學習200
11.1 定義和方法200
11.2 螞蟻和蜜蜂分類實戰(zhàn)202
11.2.1 加載數據202
11.2.2 定義訓練方法204
11.2.3 可視化預測結果205
11.2.4 遷移學習方法一:微調網絡206
11.2.5 遷移學習方法二:特征提取器208
11.3 小結209
第12章 人臉檢測和識別210
12.1 人臉檢測210
12.1.1 定義和研究現狀210
12.1.2 經典算法213
12.1.3 應用領域216
12.2 人臉識別217
12.2.1 定義和研究現狀217
12.2.2 經典算法220
12.2.3 應用領域221
12.3 人臉檢測與識別實戰(zhàn)222
12.3.1 Dlib人臉檢測222
12.3.2 基于MTCNN的人臉識別225
12.4 小結227
第13章 生成對抗網絡228
13.1 生成對抗網絡簡介228
13.2 數學模型230
13.3 生成手寫體數字圖片實戰(zhàn)233
13.3.1 基本網絡結構233
13.3.2 準備數據234
13.3.3 定義網絡和訓練235
13.3.4 生成結果分析237
13.4 生成人像圖片實戰(zhàn)238
13.4.1 DCGAN簡介239
13.4.2 數據準備239
13.4.3 生成對抗網絡的實現241
13.5 小結250
第14章 目標檢測251
14.1 目標檢測概述251
14.1.1 傳統(tǒng)目標檢測算法的研究現狀252
14.1.2 深度學習目標檢測算法的研究現狀252
14.1.3 應用領域253
14.2 檢測算法模型253
14.2.1 傳統(tǒng)的目標檢測模型253
14.2.2 基于深度學習的目標檢測模型255
14.3 目標檢測的基本概念259
14.3.1 IoU259
14.3.2 NMS261
14.4 Faster R-CNN目標檢測264
14.4.1 網絡原理265
14.4.2 實戰(zhàn)269
14.5 小結273
第15章 圖像風格遷移274
15.1 風格遷移概述274
15.2 固定風格固定內容的遷移277
15.2.1 固定風格固定內容遷移的原理277
15.2.2 PyTorch實現固定風格遷移280
15.3 快速風格遷移288
15.3.1 快速遷移模型的原理288
15.3.2 PyTorch實現快速風格遷移290
15.4 小結297
第16章 ViT298
16.1 ViT詳解298
16.1.1 Transformer模型中的Attention注意力機制298
16.1.2 視覺Transformer模型詳解302
16.2 ViT圖像分類實戰(zhàn)305
16.2.1 數據準備305
16.2.2 定義ViT模型306
16.2.3 定義工具函數311
16.2.4 定義訓練過程314
16.2.5 運行結果317
16.3 小結318
參考文獻319