内容简介
这是一本能指导读者快速掌握PyTorch和深度学习的著作,从PyTorch的原理到应用,从深度学习到强化学习,本书提供了全栈解决方案。<br />第1版上市后销量和口碑俱佳,是深度学习领域的畅销书,被誉为PyTorch领域的标准著作。第2版在第1版的基础上,去芜存菁,与时具进,根据PyTorch新版本全面升级,技术性、实战性、针对性、丰富性、易读性均得到了进一步提升,必定能帮助读者更轻松、更高效地进入深度学习的世界。<br />全书一共19章,在结构上分为三大部分:<br />第1部分(第1~4章) PyTorch基础<br />首先有针对性地讲解了Python和PyTorch的基石NumPy中的关键知识,然后详细讲解了PyTorch的基础知识、神经网络工具箱和数据处理工具箱等内容,帮助读者快速了解和掌握PyTorch。<br />第二部分(第5~10章) 深度学习基础<br />依次讲解了机器学习、视觉处理、自然语言处理、注意力机制、目标检测、语义分割、生成式深度学习等机器学习和深度学习的核心技术的原理和使用。<br />第三部分(第11~17章) 深度学习实践<br />通过实战案例的方式,详细讲解了PyTorch在人脸检测和识别、迁移学习、中英文互译、图像分类、语义分割、生成式网络、对抗攻击等领域的应用和解决方案。<br />第四部分(第18-19章) 强化学习<br />重点介绍了强化学习和深度强化学习的基础理论、常用算法及相关实例。<br />更为重要的是,为了让本书通俗易懂,在内容安排和写作方式上也颇花了一番心思。内容选择上,广泛涉猎、重点突出、注重实战;内容安排上,实例切入、由浅入深、循序渐进;表达形式上,深度抽象、化繁为简、用图说话。<br />
目录
前言<br />第1版前言<br />第一部分 PyTorch基础<br />第1章 NumPy基础知识2<br />1.1 生成NumPy数组3<br />1.1.1 数组属性4<br />1.1.2 利用已有数据生成数组4<br />1.1.3 利用 random 模块生成数组5<br />1.1.4 生成特定形状的多维数组7<br />1.1.5 利用arange、linspace <br /> 函数生成数组8<br />1.2 读取数据9<br />1.3 NumPy的算术运算11<br />1.3.1 逐元素操作11<br />1.3.2 点积运算12<br />1.4 数组变形13<br />1.4.1 修改数组的形状13<br />1.4.2 合并数组16<br />1.5 批处理19<br />1.6 节省内存20<br />1.7 通用函数21<br />1.8 广播机制23<br />1.9 小结24<br />第2章 PyTorch基础知识25<br />2.1 为何选择PyTorch25<br />2.2 PyTorch的安装配置26<br />2.2.1 安装CPU版PyTorch26<br />2.2.2 安装GPU版PyTorch28<br />2.3 Jupyter Notebook环境配置30<br />2.4 NumPy与Tensor31<br />2.4.1 Tensor概述31<br />2.4.2 创建Tensor32<br />2.4.3 修改Tensor形状34<br />2.4.4 索引操作35<br />2.4.5 广播机制35<br />2.4.6 逐元素操作36<br />2.4.7 归并操作37<br />2.4.8 比较操作37<br />2.4.9 矩阵操作38<br />2.4.10 PyTorch与NumPy比较39<br />2.5 Tensor与autograd39<br />2.5.1 自动求导要点40<br />2.5.2 计算图40<br />2.5.3 标量反向传播41<br />2.5.4 非标量反向传播42<br />2.5.5 切断一些分支的反向传播45<br />2.6 使用NumPy实现机器学习任务47<br />2.7 使用Tensor及autograd实现机器<br /> 学习任务49<br />2.8 使用优化器及自动微分实现机器<br /> 学习任务51<br />2.9 把数据集转换为带批量处理功能的<br /> 迭代器52<br />2.10 使用TensorFlow 2实现机器<br /> 学习任务54<br />2.11 小结55<br />第3章 PyTorch神经网络工具箱56<br />3.1 神经网络核心组件56<br />3.2 构建神经网络的主要工具57<br />3.2.1 nn.Module57<br />3.2.2 nn.functional58<br />3.3 构建模型59<br />3.3.1 继承nn.Module基类构建模型59<br />3.3.2 使用nn.Sequential按层<br /> 顺序构建模型60<br />3.3.3 继承nn.Module基类并应用<br /> 模型容器来构建模型63<br />3.3.4 自定义网络模块66<br />3.4 训练模型68<br />3.5 实现神经网络实例69<br />3.5.1 背景说明69<br />3.5.2 准备数据70<br />3.5.3 可视化源数据71<br />3.5.4 构建模型72<br />3.5.5 训练模型72<br />3.6 小结74<br />第4章 PyTorch数据处理工具箱75<br />4.1 数据处理工具箱概述75<br />4.2 utils.data76<br />4.3 torchvision78<br />4.3.1 transforms78<br />4.3.2 ImageFolder79<br />4.4 可视化工具81<br />4.4.1 TensorBoard简介81<br />4.4.2 用TensorBoard可视化<br /> 神经网络82<br />4.4.3 用TensorBoard可视化损失值83<br />4.4.4 用TensorBoard可视化特征图84<br />4.5 小结85<br />第二部分 深度学习基础<br />第5 章 机器学习基础88<br />5.1 机器学习的基本任务88<br />5.1.1 监督学习89<br />5.1.2 无监督学习89<br />5.1.3 半监督学习90<br />5.1.4 强化学习90<br />5.2 机器学习的一般流程90<br />5.2.1 明确目标91<br />5.2.2 收集数据91<br />5.2.3 数据探索与预处理91<br />5.2.4 选择模型及损失函数91<br />5.2.5 评估及优化模型92<br />5.3 过拟合与欠拟合93<br />5.3.1 权重正则化93<br />5.3.2 dropout正则化94<br />5.3.3 批量归一化97<br />5.3.4 层归一化99<br />5.3.5 权重初始化99<br />5.4 选择合适的激活函数100<br />5.5 选择合适的损失函数101<br />5.6 选择合适的优化器103<br />5.6.1 传统梯度优化算法104<br />5.6.2 批量随机梯度下降法105<br />5.6.3 动量算法106<br />5.6.4 Nesterov动量算法108<br />5.6.5 AdaGrad算法109<br />5.6.6 RMSProp算法111<br />5.6.7 Adam算法112<br />5.6.8 Yogi算法113<br />5.6.9 使用优化算法实例114<br />5
前言/序言
前 言<br />第2版说明<br />自本书第1版第1次于2019年10月印刷至今,已累计印刷了9次。在这3年的时间里,深度学习的发展可谓日新月异,其应用范围得到进一步拓展,同时出现了很多新的框架、新的方向。<br />在众多创新中,注意力机制是一个典型代表。注意力机制,尤其是以Transformer为基础的一些模型,在自然语言处理(NLP)领域取得了目前最好的效果(如SOTA),近几年研究人员把这种模型(如ViT模型、Swin-T模型等)应用到计算机视觉领域,也取得了巨大成功。<br />为此,本书第2版增强了注意力机制的相关内容,把注意力机制单独列为一章(即第8章),同时增加了注意力机制的应用实例,详细内容请参考第14章。<br />人工智能广泛应用于图像、视频、语音等诸多领域,比如人工智能在目标检测、语义分割等任务中的应用日益受到大家的关注,所以在第2版中我们增加了这方面的内容,具体可参考第9章和第15章。<br />除了这些新增内容外,第2版对很多原有内容进行了补充和完善,如PyTorch基础、优化算法、视觉处理基础、自然语言处理基础等内容。<br />读者对象<br />对机器学习、深度学习感兴趣的高校学生及工程师。<br />对Python、PyTorch、TensorFlow等感兴趣并希望进一步提升水平的高校学生及工程师。<br />如何阅读本书<br />本书分为三部分,共19章。<br />第一部分(第1~4章)为PyTorch基础,这是本书的基础部分,能为后续学习打好坚实基础。第1章介绍Python和PyTorch的基石—NumPy;第2章介绍PyTorch基础知识;第3章和第4章分别介绍PyTorch神经网络工具箱和数据处理工具箱等内容。<br />第二部分(第5~10章)为深度学习基础,这也是本书的核心部分。第5章为机器学习基础,也是深度学习基础,其中包含很多机器学习经典理论、算法和方法等内容;第6章为视觉处理基础,介绍卷积神经网络的相关概念、原理及架构等内容,并用PyTorch实现多个视觉处理实例;第7章介绍自然语言处理基础,重点介绍循环神经网络的原理和架构,同时介绍了词嵌入等内容,然后用PyTorch实现多个自然语言处理、时间序列方面的实例;第8章介绍注意力机制;第9章介绍目标检测与语义分割;第10章介绍生成式深度学习的相关内容,具体包括编码器-解码器模型、带注意力的编码器-解码器模型、生成式对抗网络及多种衍生生成器,同时使用PyTorch实现多个生成式对抗网络实例。<br />第三部分(第11~19章)为深度学习实战,即前面两部分知识的具体应用。这部分在介绍相关原理、架构的基础上,使用PyTorch实现多个深度学习的典型应用实例,最后介绍了强化学习、深度强化学习等内容。第11章用PyTorch实现人脸检测与识别;第12章用PyTorch实现迁移学习;第13章用PyTorch实现中英文互译;第14章使用ViT进行图像分类;第15章为语义分割实例;第16章介绍多个生成模型实例;第17章介绍对抗攻击原理及用PyTorch实现对抗攻击实例;第18章和第19章介绍了强化学习、深度强化学习基础知识及多个强化学习实例。<br />勘误和支持<br />在本书编写过程中得到了张魁、刘未昕等人的大力支持,他们负责整个环境的搭建和维护工作。由于笔者水平有限,书中难免存在错误或不准确的地方,恳请读者批评指正。你可以通过访问httpgithub.comWumg 3000feiguyunai下载代码和数据,也可以通过QQ交流群(493272175)进行反馈,非常感谢你的支持和帮助。<br />致谢<br />在本书编写过程中,得到了很多同事、朋友、老师和同学的大力支持!感谢博世的王冬、王红星;感谢上海交大慧谷的程国旗老师,上海大学的白延琴老师、李常品老师,上海师范大学的田红炯老师、李昭祥老师,以及赣南师范大学的许景飞老师等。<br />感谢机械工业出版社的编辑给予本书的大力支持和帮助。<br />最后,感谢我的爱人赵成娟,她在繁忙的教学之余帮助审稿,提出许多改进意见或建议。<br /><br />吴茂贵<br /><br /><br />PREFACE<br />第1版前言<br />为什么写这本书<br />在人工智能时代,如何尽快掌握人工智能的核心—深度学习呢?相信这是每个欲进入此领域的人面临的主要问题。目前,深度学习框架很多,如TensorFlow、PyTorch、Keras、FastAI、CNTK等,这些框架各有优点或不足,如何选择呢?是否有一些标准?有,我觉得适合自己的就是最好的。<br />如果你是一位初学者,建议你选择PyTorch,待有了一定的基础之后,可以学习其他框架,如TensorFlow、CNTK等。建议初学者选择PyTorch的主要依据如下。<br />1)PyTorch是动态计算图,更贴近Python的用法,并且PyTorch与Python共用了许多NumPy命令,降低了学习门槛,比TensorFlow更容易上手。<br />2)PyTorch需要定义网络层、参数更新等关键步骤,这非常有助于理解深度学习的核心;而Keras虽然也非常简单,容易上手,但封装粒度很粗,隐