作为一名机器学习|深度学习的博主,想和大家分享几本深度学习的书籍,让大家更快的入手深度学习,成为AI达人!今天给大家介绍的是:《Python深度学习 基于Pytorch》
文章目录
一、背景二、内容简介三、新版特色四、作者介绍五、目录
一、背景
在人工智能时代,如何尽快掌握人工智能的核心—深度学习呢?相信这是每个欲进入此领域的人面临的主要问题。目前,深度学习框架很多,如TensorFlow、PyTorch、Keras、FastAI、CNTK等。
面对众多的深度学习框架,初学者应如何选择?哪个框架既易于上手,又在工业界有广泛应用?毫无疑问,PyTorch是不二之选。一方面,PyTorch天然与Python结合,大大降低了深度学习的门槛;另一方面,它的流行度仅次于TensorFlow,而且有赶超之势,但是上手难度却比TensorFlow低很多。如果你是一位初学者,建议你选择PyTorch,待有了一定的基础之后,可以学习其他框架,如TensorFlow、CNTK等。
这是一本能指导读者快速掌握PyTorch和深度学习的著作,从PyTorch的原理到应用,从深度学习到强化学习,本书提供了全栈解决方案。本书还涉及AIGC技术的核心内容,本书第8章、第14重点介绍了注意力机制及Transformer架构及其应用,第10章、第16章介绍了生成式网络核心架构(如AE、VAE、GAN等),这些架构包括降噪、重参数化等技术,此外,本书还包括目标检测、强化学习等内容。除理论、原理介绍外,还包括大量可动手实践的实例。
第1版上市后销量和口碑俱佳,是深度学习领域的畅销书,被誉为PyTorch领域的标准著作。第2版在第1版的基础上,去芜存菁,与时俱进,根据PyTorch新版本全面升级,技术性、实战性、丰富性、针对性、易读性均得到了进一步提升,必能帮助读者更轻松、更高效地进入深度学习的世界。帮助读者低门槛进入深度学习领域,轻松掌握深度学习的理论知识和实践方法,快速实现从入门到进阶的转变”是这本书的核心目标。
二、内容简介
本书分为三部分,共19章,第一部分为PyTorch基础,第二部分为深度学习基本原理,第三部分是实战内容。
第一部分(第1~4章)为Python和PyTorch基础部分,也是本书的基础部分,为后续学习打下一个坚实基础。第1章介绍了PyTorch的基石NumPy;第2章介绍PyTorch基础;第3、4章分别介绍PyTorch构建神经网络工具箱和数据处理工具箱等内容。第二部分(第5~10章)为机器学习、深度学习部分,这是本书核心部分。第5章为机器学习基础;第6章为视觉处理基础;第7章介绍自然语言处理基础;第8章介绍注意力机制,详解介绍Transformer架构;第9章介绍目标检测与语义分割;第10章介绍生成式深度学习相关内容,包括AE,VAE,GAN、CGAN等模型。第三部分(第11~19章)为深度学习实战,也即前面两部分的具体应用部分。这部分在介绍相关原理、架构的基础上,用PyTorch具体实现的典型实例,最后介绍了强化学习、深度强化学习等内容。具体各章节内容为,第11章用PyTorch实现人脸检测和识别;第12章用PyTorch实现迁移学习、迁移学习结合数据增强等实例;第13章用PyTorch实现中英文互译;第14章介绍了基于Transformer架构的ViT进行图像分类;第15章为语义分割实例;第16章多个生成式网络实例;第17章介绍对抗攻击原理及PyTorch实现对抗攻击实例;第18、19章介绍了强化学习、深度强化学习等基础及多个强化学习实例。更为重要的是,为了让本书通俗易懂,在内容安排和写作方式上也颇花了一番心思。内容选择上,广泛涉猎、重点突出、注重实战;内容安排上,实例切入、由浅入深、循序渐进;表达形式上,深度抽象、化繁为简、用图说话。
三、新版特色
自本书第1版第1次于2019年10月印刷至今,已累计印刷了9次。在这3年的时间里,深度学习的发展可谓日新月异,其应用范围得到进一步拓展,同时出现了很多新的框架、新的方向。
在众多创新中,注意力机制是一个典型代表。注意力机制,尤其是以Transformer为基础的一些模型,在自然语言处理(NLP)领域取得了目前最好的效果(如SOTA),近几年研究人员把这种模型(如ViT模型、Swin-T模型等)应用到计算机视觉领域,也取得了巨大成功。
为此,本书第2版增强了注意力机制的相关内容,把注意力机制单独列为一章(即第8章),同时增加了注意力机制的应用实例,详细内容请参考第14章。
人工智能广泛应用于图像、视频、语音等诸多领域,比如人工智能在目标检测、语义分割等任务中的应用日益受到大家的关注,所以在第2版中我们增加了这方面的内容,具体可参考第9章和第15章。
除了这些新增内容外,第2版对很多原有内容进行了补充和完善,如PyTorch基础、优化算法、视觉处理基础、自然语言处理基础等内容。
为便利大家更好理解本书,特提供PPT文档
PPT文档对书中内容进行提炼,并包括很多gif动画,便于更直观理解相关原理和概念,此外,作为不少拓展,包括GPT-3、ChatGPT、Diffusion Model等内容。
四、作者介绍
吴茂贵,资深大数据和人工智能技术专家,在BI、数据挖掘与分析、数据仓库、机器学习等领域工作超过20年。在基于Spark、TensorFlow、PyTorch等的机器学习和深度学习方面有大量的工程实践经验。著有《Python深度学习:基于TensorFlow》《深度实践Spark机器学习》《自己动手做大数据系统》《深入浅出Embedding原理解析与应用实践》等畅销书。
郁明敏,资深商业分析师,从事互联网金融算法研究工作,专注于大数据、机器学习以及数据可视化的相关领域,擅长 Python、Hadoop、Spark 等技术,拥有丰富的实战经验。曾获“江苏省TI杯大学生电子竞技大赛”二等奖和“华为杯全国大学生数学建模大赛”二等奖。
杨本法,高级算法工程师,工业表面缺陷检测设备开发架构师,在机器学习、文本挖掘、可视化等领域有多年实践经验。做过大型电商的推荐系统,知名手机厂商外壳表面检测设备。熟悉Hadoop、Spark生态圈的相关技术,对Python有丰富的实战经验。
李 涛 ,资深AI技术工程师,任职于携程(上海)科技有限公司,负责酒店排序推荐相关项目的数据分析和算法开发,对计算机视觉技术和搜索推荐系统有深刻的理解和丰富的实践经验。
张粤磊 ,国云大数据学院院长,飞谷云创始人,毕业于中国科技大学,原平安壹钱包大数据架构师。业内知名大数据专家,多部大数据畅销书作者。2016年以来每年都以高级专家和咨询顾问身份深入参与大数据、人工智能技术在行业的落地应用。
五、目录
前言第1版前言第一部分 PyTorch基础第1章 NumPy基础知识21.1 生成NumPy数组31.1.1 数组属性41.1.2 利用已有数据生成数组41.1.3 利用 random 模块生成数组51.1.4 生成特定形状的多维数组71.1.5 利用arange、linspace 函数生成数组81.2 读取数据91.3 NumPy的算术运算111.3.1 逐元素操作111.3.2 点积运算121.4 数组变形131.4.1 修改数组的形状131.4.2 合并数组161.5 批处理191.6 节省内存201.7 通用函数211.8 广播机制231.9 小结24第2章 PyTorch基础知识252.1 为何选择PyTorch252.2 PyTorch的安装配置262.2.1 安装CPU版PyTorch262.2.2 安装GPU版PyTorch282.3 Jupyter Notebook环境配置302.4 NumPy与Tensor312.4.1 Tensor概述312.4.2 创建Tensor322.4.3 修改Tensor形状342.4.4 索引操作352.4.5 广播机制352.4.6 逐元素操作362.4.7 归并操作372.4.8 比较操作372.4.9 矩阵操作382.4.10 PyTorch与NumPy比较392.5 Tensor与autograd392.5.1 自动求导要点402.5.2 计算图402.5.3 标量反向传播412.5.4 非标量反向传播422.5.5 切断一些分支的反向传播452.6 使用NumPy实现机器学习任务472.7 使用Tensor及autograd实现机器 学习任务492.8 使用优化器及自动微分实现机器 学习任务512.9 把数据集转换为带批量处理功能的 迭代器522.10 使用TensorFlow 2实现机器 学习任务542.11 小结55第3章 PyTorch神经网络工具箱563.1 神经网络核心组件563.2 构建神经网络的主要工具573.2.1 nn.Module573.2.2 nn.functional583.3 构建模型593.3.1 继承nn.Module基类构建模型593.3.2 使用nn.Sequential按层 顺序构建模型603.3.3 继承nn.Module基类并应用 模型容器来构建模型633.3.4 自定义网络模块663.4 训练模型683.5 实现神经网络实例693.5.1 背景说明693.5.2 准备数据703.5.3 可视化源数据713.5.4 构建模型723.5.5 训练模型723.6 小结74第4章 PyTorch数据处理工具箱754.1 数据处理工具箱概述754.2 utils.data764.3 torchvision784.3.1 transforms784.3.2 ImageFolder794.4 可视化工具814.4.1 TensorBoard简介814.4.2 用TensorBoard可视化 神经网络824.4.3 用TensorBoard可视化损失值834.4.4 用TensorBoard可视化特征图844.5 小结85第二部分 深度学习基础第5 章 机器学习基础885.1 机器学习的基本任务885.1.1 监督学习895.1.2 无监督学习895.1.3 半监督学习905.1.4 强化学习905.2 机器学习的一般流程905.2.1 明确目标915.2.2 收集数据915.2.3 数据探索与预处理915.2.4 选择模型及损失函数915.2.5 评估及优化模型925.3 过拟合与欠拟合935.3.1 权重正则化935.3.2 dropout正则化945.3.3 批量归一化975.3.4 层归一化995.3.5 权重初始化995.4 选择合适的激活函数1005.5 选择合适的损失函数1015.6 选择合适的优化器1035.6.1 传统梯度优化算法1045.6.2 批量随机梯度下降法1055.6.3 动量算法1065.6.4 Nesterov动量算法1085.6.5 AdaGrad算法1095.6.6 RMSProp算法1115.6.7 Adam算法1125.6.8 Yogi算法1135.6.9 使用优化算法实例1145.7 GPU加速1165.7.1 单GPU加速1165.7.2 多GPU加速1175.7.3 使用GPU时的注意事项1205.8 小结121第6章 视觉处理基础1226.1 从全连接层到卷积层1226.1.1 图像的两个特性1236.1.2 卷积神经网络概述1246.2 卷积层1256.2.1 卷积核1276.2.2 步幅1296.2.3 填充1306.2.4 多通道上的卷积1316.2.5 激活函数1346.2.6 卷积函数1356.2.7 转置卷积1366.2.8 特征图与感受野1376.2.9 全卷积网络1386.3 池化层1396.3.1 局部池化1406.3.2 全局池化1406.4 现代经典网络1426.4.1 LeNet-5模型1426.4.2 AlexNet模型1436.4.3 VGG模型1436.4.4 GoogLeNet模型1446.4.5 ResNet模型1456.4.6 DenseNet模型1466.4.7 CapsNet模型1486.5 使用卷积神经网络实现CIFAR10 多分类1496.5.1 数据集说明1496.5.2 加载数据1496.5.3 构建网络1516.5.4 训练模型1516.5.5 测试模型1526.5.6 采用全局平均池化1536.5.7 像Keras一样显示各层参数1546.6 使用模型集成方法提升性能1566.6.1 使用模型1566.6.2 集成方法1576.6.3 集成效果1586.7 使用现代经典模型提升性能1586.8 小结159第7章 自然语言处理基础1607.1 从语言模型到循环神经网络1607.1.1 链式法则1617.1.2 马可夫假设与N元语法模型1617.1.3 从N元语法模型到隐含 状态表示1617.1.4 从神经网络到有隐含状态的 循环神经网络1627.1.5 使用循环神经网络构建 语言模型1647.1.6 多层循环神经网络1647.2 正向传播与随时间反向传播1657.3 现代循环神经网络1677.3.1 LSTM1687.3.2 GRU1697.3.3 Bi-RNN1697.4 循环神经网络的PyTorch实现1707.4.1 使用PyTorch实现RNN1707.4.2 使用PyTorch实现LSTM1727.4.3 使用PyTorch实现GRU1747.5 文本数据处理1757.6 词嵌入1767.6.1 Word2Vec原理1777.6.2 CBOW模型1777.6.3 Skip-Gram模型1787.7 使用PyTorch实现词性判别1797.7.1 词性判别的主要步骤1797.7.2 数据预处理1807.7.3 构建网络1807.7.4 训练网络1817.7.5 测试模型1827.8 用LSTM预测股票行情1837.8.1 导入数据1837.8.2 数据概览1837.8.3 预处理数据1847.8.4 定义模型1857.8.5 训练模型1857.8.6 测试模型1867.9 几种特殊架构1877.9.1 编码器-解码器架构1877.9.2 Seq2Seq架构1897.10 循环神经网络应用场景1897.11 小结190第8章 注意力机制1918.1 注意力机制概述1918.1.1 两种常见注意力机制1928.1.2 来自生活的注意力1928.1.3 注意力机制的本质1928.2 带注意力机制的编码器-解码器架构1948.2.1 引入注意力机制1948.2.2 计算注意力分配概率分布值1968.3 Transformer1988.3.1 Transformer的顶层设计1988.3.2 编码器与解码器的输入2008.3.3 自注意力2008.3.4 多头注意力2038.3.5 自注意力与循环神经网络、 卷积神经网络的异同2048.3.6 加深Transformer网络层的 几种方法2058.3.7 如何进行自监督学习2058.3.8 Vision Transformer2078.3.9 Swin Transformer2088.4 使用PyTorch实现Transformer2138.4.1 Transformer背景介绍2148.4.2 构建EncoderDecoder2148.4.3 构建编码器2158.4.4 构建解码器2188.4.5 构建多头注意力2198.4.6 构建前馈神经网络层2218.4.7 预处理输入数据2228.4.8 构建完整网络2248.4.9 训练模型2258.4.10 实现一个简单实例2288.5 小结230第9章 目标检测与语义分割2319.1 目标检测及主要挑战2319.1.1 边界框的表示2329.1.2 手工标注图像的真实值2339.1.3 主要挑战2369.1.4 选择性搜索2369.1.5 锚框2379.1.6 RPN2399.2 优化候选框的几种算法2409.2.1 交并比2409.2.2 非极大值抑制2409.2.3 边框回归2419.2.4 SPP-Net2439.3 典型的目标检测算法2449.3.1 R-CNN2449.3.2 Fast R-CNN2459.3.3 Faster R-CNN2459.3.4 Mask R-CNN2469.3.5 YOLO2479.3.6 各种算法的性能比较2489.4 语义分割2499.5 小结250第10章 生成式深度学习25110.1 用变分自编码器生成图像25110.1.1 自编码器25110.1.2 变分自编码器25210.1.3 用变分自编码器生成图像实例25310.2 GAN简介25610.2.1 GAN的架构25610.2.2 GAN的损失函数25710.3 用GAN生成图像25710.3.1 构建判别器25810.3.2 构建生成器25810.3.3 训练模型25810.3.4 可视化结果25910.4 VAE与GAN的异同26010.5 CGAN26010.5.1 CGAN的架构26110.5.2 CGAN的生成器26110.5.3 CGAN的判别器26210.5.4 CGAN的损失函数26210.5.5 CGAN的可视化26210.5.6 查看指定标签的数据26310.5.7 可视化损失值26310.6 DCGAN26410.7 提升GAN训练效果的技巧26510.8 小结266第三部分 深度学习实战第11章 人脸检测与识别实例26811.1 人脸检测与识别的一般流程26811.2 人脸检测26911.2.1 目标检测26911.2.2 人脸定位26911.2.3 人脸对齐27011.2.4 MTCNN算法27011.3 特征提取与人脸识别27111.4 使用PyTorch实现人脸检测与识别27611.4.1 验证检测代码27711.4.2 检测图像27711.4.3 检测后进行预处理27811.4.4 查看检测后的图像27811.4.5 人脸识别27911.5 小结279第12章 迁移学习实例28012.1 迁移学习简介28012.2 特征提取28112.2.1 PyTorch提供的预处理模块28212.2.2 特征提取实例28312.3 数据增强28512.3.1 按比例缩放28612.3.2 裁剪28612.3.3 翻转28712.3.4 改变颜色28712.3.5 组合多种增强方法28712.4 微调实例28812.4.1 数据预处理28812.4.2 加载预训练模型28912.4.3 修改分类器28912.4.4 选择损失函数及优化器28912.4.5 训练及验证模型29012.5 清除图像中的雾霾29012.6 小结293第13章 神经网络机器翻译实例29413.1 使用PyTorch实现带注意力的 解码器29413.1.1 构建编码器29413.1.2 构建解码器29513.1.3 构建带注意力的解码器29513.2 使用注意力机制实现中英文互译29713.2.1 导入需要的模块29713.2.2 数据预处理29813.2.3 构建模型30013.2.4 训练模型30213.2.5 测试模型30313.2.6 可视化注意力30413.3 小结305第14章 使用ViT进行图像分类30614.1 项目概述30614.2 数据预处理30614.3 生成输入数据30814.4 构建编码器模型31014.5 训练模型31314.6 小结314第15章 语义分割实例31515.1 数据概览31515.2 数据预处理31615.3 构建模型31915.4 训练模型32215.5 测试模型32515.6 保存与恢复模型32615.7 小结326第16章 生成模型实例32716.1 Deep Dream模型32716.1.1 Deep Dream原理32716.1.2 Deep Dream算法的流程32816.1.3 使用PyTorch实现 Deep Dream32916.2 风格迁移33116.2.1 内容损失33216.2.2 风格损失33316.2.3 使用PyTorch实现神经 网络风格迁移33516.3 使用PyTorch实现图像修复33916.3.1 网络结构33916.3.2 损失函数34016.3.3 图像修复实例34016.4 使用PyTorch实现DiscoGAN34216.4.1 DiscoGAN架构34316.4.2 损失函数34416.4.3 DiscoGAN实现34516.4.4 使用PyTorch实现 DiscoGAN实例34616.5 小结348第17章 AI新方向:对抗攻击34917.1 对抗攻击简介34917.1.1 白盒攻击与黑盒攻击35017.1.2 无目标攻击与有目标攻击35017.2 常见对抗样本生成方式35017.2.1 快速梯度符号算法35117.2.2 快速梯度算法35117.3 使用PyTorch实现对抗攻击35117.3.1 实现无目标攻击35117.3.2 实现有目标攻击35417.4 对抗攻击和防御方法35517.4.1 对抗攻击35517.4.2 常见防御方法分类35517.5 小结356第18章 强化学习35718.1 强化学习简介35718.2 Q-Learning算法原理35918.2.1 Q-Learning算法的主要流程35918.2.2 Q函数36018.2.3 贪婪策略36018.3 使用PyTorch实现Q-Learning算法36118.3.1 定义Q-Learning主函数36118.3.2 运行Q-Learning算法36218.4 SARSA 算法36218.4.1 SARSA算法的主要步骤36218.4.2 使用PyTorch实现SARSA 算法36318.5 小结364第19章 深度强化学习36519.1 DQN算法原理36519.1.1 Q-Learning方法的局限性36619.1.2 用深度学习处理强化学习 需要解决的问题36619.1.3 用DQN算法解决问题36619.1.4 定义损失函数36619.1.5 DQN的经验回放机制36719.1.6 目标网络36719.1.7 网络模型36719.1.8 DQN算法实现流程36719.2 使用PyTorch实现 DQN算法36819.3 小结371附录A PyTorch 0.4版本变更372附录B AI在各行业的最新应用377附录C einops及einsum简介383