《细说机器学习:从理论到实践》从数学知识入手,详尽细致地阐述机器学习各方面的理论知识、常用算法与流行框架,并以大量代码示例进行实践。本书内容分为三篇:篇为基础知识,包括机器学习概述、开发环境和常用模块、特征工程、模型评估、降维方法等内容。本篇详细而友好地介绍机器学习的核心概念与原理,并结合大量示例帮助读者轻松入门。第二篇为算法应用,涵盖机器学习重要与高频使用的模型,包括K-Means聚类、K近邻、回归、决策树、朴素贝叶斯、支持向量机、神经网络等内容。本篇不仅详细讲解各个算法的原理,还提供大量注释详尽的代码示例,使这些算法变得直观易懂。第三篇为拓展应用,包括集成学习、深度学习框架TensorFlow与PyTorch入门、卷积网络、激活函数以及模型微调与项目实战。本篇内容更加前沿与高级,带领读者跨过机器学习的门槛,进行真实项目的实践与部署。 《细说机器学习:从理论到实践》内容丰富、系统且实用,大量相关代码示例贴近实战,能够为读者学习机器学习打下扎实的基础,并真正掌握运用这些知识与算法解决实际问题的技能。适合机器学习入门者、大学生、人工智能从业者,以及各行业技术人员和科研人员使用,也可作为培训机构和大专院校人工智能课程的教学用书。
《细说机器学习:从理论到实践》是一个详细介绍现代机器学习理论、经典算法与流行框架及编程实现的机器学习入门书。
从统计学、线性代数与概率论等机器学习的基础知识讲起,然后介绍机器学习的基本概念,继 而讲解常用算法与编程实现,最后介绍高级知识、框架实践与项目案例,兼顾理论与应用,详 尽易懂。
每个知识点配合示例练习,全书共设计200多个编程实例,向读者展示机器学习算法与框架的实际应用。
全书涉及面广,如神经网络、卷积网络、集成学习、迁移学习等当前机器学习热点均有所涉及 。
结合作者多年机器学习研究与开发经验,采用流行的Python语言实现,讲解细致,娓娓道来, 适合转型想进入人工智能领域的大学生、开发人员、技术人员和研究人员阅读。
前 言
21世纪大国之间的竞争归根结底是人才的竞争,人工智能作为目前促进产业升级的关键技术,在学术界和工业界都有广泛的应用,被国家提高到了战略高度。广大国民掌握人工智能技术将极大地促进生产力发展,提升国家综合竞争力,为国家发展做出技术上的贡献。出于这样的思考,本书为有志于在21世纪从事人工智能事业的读者编写,希望通过本书为促进国家人工智能技术的进步做出微薄贡献。
众所周知,在国家层面,人工智能技术已经成为社会经济发展的新引擎,该技术已经被应用于人们日常生活的方方面面。PyTorch是实现人工智能的重要技术途径之一,学好PyTorch将十分有利于掌握人工智能技术。
人工智能技术作为新一轮产业变革的核心驱动技术,将进一步释放历次科技革命和产业变革积蓄的巨大势能,进一步促进经济巨大发展,形成宏观经济、微观经济等领域的社会智能化新需求,激发新技术、新产品、新产业、新业态、新模式不断涌现,引发社会经济结构重大变革,深刻改变国民日常生产生活方式和经济社会生活思维模式,实现国家生产力的跨越提升。
我国经济社会发展已经进入了新阶段,实现共同富裕已经成为当前主要的社会发展目标和任务,需要加快人工智能应用于实体经济产业领域,提升人工智能技术产业化水平,为我国社会发展注入强大的技术支持和核心科技
动力。
随着我国社会发展和工业升级的需求,人工智能技术人才需求越来越大,但是由于人工智能技术是一门交叉学科,涉及的基础知识繁杂,因此不易入门和学习。为了降低人工智能技术的入门门槛,本书从理论出发,结合实例,尽量用简单易懂的语言讲述高深的知识点,为有志于从事基于PyTorch进行人工智能开发的从业者提供一本好的PyTorch技术参考书。
本书内容
本书结合多年PyTorch使用经验与实际工程应用案例,将PyTorch的编程方法与技巧详细地讲解给读者。本书在讲解过程中步骤详尽、内容新颖,辅以相应的图示,使读者在阅读时能一目了然,从而快速掌握书中所讲的内容。
第一篇为基础知识,包括以下章节:
第1章 人工智能和PyTorch 第2章 开发环境
第3章 PyTorch入门 第4章 卷积网络
第5章 经典神经网络 第6章 模型的保存和调用
第7章 网络可视化 第8章 数据加载和预处理
第9章 数据增强
第二篇为高级应用,包括以下章节:
第10章 图像分类 第11章 迁移学习
第12章 人脸检测和识别 第13章 生成对抗网络
第14章 目标检测 第15章 图像风格迁移
第16章 ViT
本书特点
本书由资深业界专家精心编写,内容涵盖PyTorch的基础知识、经典算法、模型训练及编程实现。
从PyTorch的安装与基本知识开始,首先介绍和深度学习相关的库NumPy和Matplotlib、Scikit-Learn,然后逐步深入细致地讲解各个知识点,确保读者可以快速上手。
基础理论结合热点应用,比如,介绍了PyTorch在经典的神经网络、卷积网络、模型调用和保存、数据可视化、数据增强等方面的编程实现,介绍了PyTorch在人脸识别、生成对抗网络、图像分类、目标检测、迁移学习中的应用以及前沿技术热点Vit等。
每个知识点在讲解的过程中,配套大量示例,全书涉及100多个编程实例,向读者展示PyTorch在深度学习中的应用。
读者对象
本书适合PyTorch初学者和期望应用PyTorch技术进行机器学习开发的读者,具体说明如下:
初学PyTorch的技术人员
广大从事深度学习的科研工作人员
大、中专院校的教师和学生
相关培训机构的教师和学员
刚参加工作实习的深度学习菜鸟
PyTorch深度学习技术爱好者
源码下载
本书提供了程序源代码,读者可扫描下面的二维码,按扫描后的页面提示填写你的邮箱,把下载链接转发到邮箱中下载。如果下载有问题或阅读中发现问题,请用电子邮件联系booksaga@126.com,邮件主题写细说PyTorch深度学习:理论、算法、模型与编程实现。
读者服务
为了方便解决本书的疑难问题,读者朋友在学习过程中遇到与本书有关的技术问题,可以关注算法仿真公众号获取帮助,我们将竭诚为您 服务。
本书由凌峰、丁麒文编著,虽然作者在本书的编写过程中力求叙述准确、完善,但由于水平有限,书中疏漏之处在所难免,希望广大读者和同仁及时指出,共同促进本书质量的提高。
最后,再次希望本书能为读者的学习和工作提供帮助!
编者
2023年3月
凌峰,毕业于中国科学院大学,博士,高级职称,从事机器学习、计算机视觉、图像处理、人 工智能研究与开发工作多年,拥有丰富的机器学习算法实现经验,一个低调潜心研究技术的高手。
目 录
第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章 开发环境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 创建张量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 字典状态(state_dict)136
6.2 保存和加载模型138
6.2.1 使用ate_dict加载模型138
6.2.2 保存和加载完整模型139
6.2.3 保存和加载Checkpoint用于推理、继续训练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 指定区域擦除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 猫狗分类实战195
10.3.1 猫狗数据预处理195
10.3.2 建立网络猫狗分类196
10.4 小结199
第11章 迁移学习200
11.1 定义和方法200
11.2 蚂蚁和蜜蜂分类实战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 人脸检测与识别实战222
12.3.1 Dlib人脸检测222
12.3.2 基于MTCNN的人脸识别225
12.4 小结227
第13章 生成对抗网络228
13.1 生成对抗网络简介228
13.2 数学模型230
13.3 生成手写体数字图片实战233
13.3.1 基本网络结构233
13.3.2 准备数据234
13.3.3 定义网络和训练235
13.3.4 生成结果分析237
13.4 生成人像图片实战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 传统目标检测算法的研究现状252
14.1.2 深度学习目标检测算法的研究现状252
14.1.3 应用领域253
14.2 检测算法模型253
14.2.1 传统的目标检测模型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 实战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图像分类实战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