深入浅出PyTorch:从模型到源码pdf下载

深入浅出PyTorch:从模型到源码百度网盘pdf下载

作者:
简介:深入浅出PyTorch:从模型到源码
出版社:电子工业出版社
出版时间:2020-04-01
pdf下载价格:9.00¥


预览


内容介绍

内容简介
  本书从机器学习和深度学习的基础概念入手,由浅到深地详细介绍了PyTorch深度学习框架的知识,主要包含深度学习的基础知识,如神经网络的优化算法、神经网络的模块等;同时也包含了深度学习的进阶知识,如使用PyTorch构建复杂的深度学习模型,以及前沿的深度学习模型的介绍等。另外,为了加深读者对PyTorch深度学习框架的理解和掌握,本书还介绍了PyTorch的源代码结构,包括该框架的Python语言前端和C++语言后端的源代码结构。
作者简介
  张校捷,英伟达(NVIDIA)资深深度学习架构工程师,负责基于CUDA的深度学习框架的优化。目前主要使用的技术栈是作为深度学习框架后端的C/C++/CUDA,以及深度学习框架前端的Python,对主流的深度学习框架如PyTorch和TensorFlow比较熟悉,并精通其在计算机视觉(CV)和自然语言处理(NLP)方面的具体应用。作者多次作为专题演讲嘉宾,受邀参加CSDN主办的技术大会。
目录
内容简介
推荐序
前言
第1章 深度学习概念简介
1.1 深度学习的历史
1.1.1 深度学习的发展过程
1.1.2 深度学习在计算机视觉领域的发展
1.1.3 深度学习在自然语言处理和其他领域的发展
1.2 机器学习基本概念
1.2.1 机器学习的主要任务
1.2.2 机器模型的类型
1.2.3 损失函数以及模型的拟合
1.3 深度学习基本概念
1.3.1 向量、矩阵和张量及其运算
1.3.2 张量的存储
1.3.3 神经元的概念
1.4 输入数据的表示方式
1.4.1 图像数据的表示方式
1.4.2 文本数据的表示方式
1.4.3 音频数据的表示方式
1.5 线性变换和激活函数
1.5.1 全连接线性变换
1.5.2 卷积线性变换
1.5.3 激活函数
1.6 链式求导法则和反向传播
1.6.1 基于链式求导的梯度计算
1.6.2 激活函数的导数
1.6.3 数值梯度
1.7 损失函数和优化器
1.7.1 常用的损失函数
1.7.2 基于梯度的优化器
1.7.3 学习率衰减和权重衰减
1.8 本章总结
第2章 PyTorch深度学习框架简介
2.1 深度学习框架简介
2.1.1 深度学习框架中的张量
2.1.2 深度学习框架中的计算图
2.1.3 深度学习框架中的自动求导和反向传播
2.2 PyTorch框架历史和特性更迭
2.3 PyTorch的安装过程
2.4 PyTorch包的结构
2.4.1 PyTorch的主要模块
2.4.2 PyTorch的辅助工具模块
2.5 PyTorch中张量的创建和维度的操作
2.5.1 张量的数据类型
2.5.2 张量的创建方式
2.5.3 张量的存储设备
2.5.4 和张量维度相关的方法
2.5.5 张量的索引和切片
2.6 PyTorch中张量的运算
2.6.1 涉及单个张量的函数运算
2.6.2 涉及多个张量的函数运算
2.6.3 张量的极值和排序
2.6.4 矩阵的乘法和张量的缩并
2.6.5 张量的拼接和分割
2.6.6 张量维度的扩增和压缩
2.6.7 张量的广播
2.7 PyTorch中的模块简介
2.7.1 模块类
2.7.2 基于模块类的简单线性回归类
2.7.3 线性回归类的实例化和方法调用
2.8 PyTorch的计算图和自动求导机制
2.8.1 自动求导机制简介
2.8.2 自动求导机制实例
2.8.3 梯度函数的使用
2.8.4 计算图构建的启用和禁用
2.9 PyTorch的损失函数和优化器
2.9.1 损失函数
2.9.2 优化器
2.10 PyTorch中数据的输入和预处理
2.10.1 数据载入类
2.10.2 映射类型的数据集
2.10.3 torchvision工具包的使用
2.10.4 可迭代类型的数据集
2.11 PyTorch模型的保存和加载
2.11.1 模块和张量的序列化及反序列化
2.11.2 模块状态字典的保存和载入
2.12 PyTorch数据的可视化
2.12.1 TensorBoard的安装和使用
2.12.2 TensorBoard的常用可视化数据类型
2.13 PyTorch模型的并行化
2.13.1 数据并行化
2.13.2 分布式数据并行化
2.14 本章总结
第3章 PyTorch计算机视觉模块
3.1 计算机视觉基本概念
3.1.1 计算机视觉任务简介
3.1.2 基础图像变换操作
3.1.3 图像特征提取
3.1.4 滤波器的概念
3.2 线性层
3.3 卷积层
3.4 归一化层
3.5 池化层
3.6 丢弃层
3.7 模块的组合
3.8 特征提取
3.9 模型初始化
3.10 常见模型结构
3.10.1 InceptionNet的结构
3.10.2 ResNet的结构
3.11 本章总结
第4章 PyTorch机器视觉案例
4.1 常见计算机视觉任务和数据集
4.1.1 图像分类任务简介
4.1.2 目标检测任务简介
4.1.3 图像分割任务简介
4.1.4 图像生成任务简介
4.1.5 常用深度学习公开数据集
4.2 手写数字识别:LeNet
4.2.1 深度学习工程的结构
4.2.2 MNIST数据集的准备
4.2.3 LeNet网络的搭建
4.2.4 LeNet网络的训练和测试
4.2.5 超参数的修改和argparse库的使用
4.3 图像分类:ResNet和InceptionNet
4.3.1 ImageNet数据集的使用
4.3.2 ResNet网络的搭建
4.3.3 InceptionNet网络的搭建
4.4 目标检测:SSD
4.4.1 SSD的骨架网络结构
4.4.2 SSD的特征提取网络结构
4.4.3 锚点框和选框预测
4.4.4 输入数据的预处理
4.4.5 损失函数的计算
4.4.6 模型的预测和非极大抑制算法
4.5 图像分割:FCN和U-Net
4.5.1 FCN网络结构
4.5.2 U-Net网络结构
4.6 图像风格迁移
4.6.1 图像风格迁移算法介绍
4.6.2 输入图像的特征提取
4.6.3 输入图像的优化
4.7 生成模型:VAE和GAN
4.7.1 变分自编码器介绍
4.7.2 变分自编码器的实现
4.7.3 生成对抗网络介绍
4.7.4 生成对抗网络的实现
4.8 本章总结
第5章 PyTorch自然语言处理模块
5.1 自然语言处理基本概念
5.1.1 机器翻译相关的自然语言处理研究
5.1.2 其他领域的自然语言处理研究
5.1.3 自然语言处理中特征提取的预处理
5.1.4 自然语言处理中词频特征的计算方法
5.1.5 自然语言处理中TF-IDF特征的计算方法
5.2 词嵌入层
5.3 循环神经网络层:GRU和LSTM
5.3.1 简单循环神经网络
5.3.2 长短时记忆网络(LSTM)
5.3.3 门控循环单元(GRU)
5.4 注意力机制
5.5 自注意力机制
5.5.1 循环神经网络的问题
5.5.2 自注意力机制的基础结构
5.5.3 使用自注意力机制构建Seq2Seq模型
5.5.4 PyTorch中自注意力机制的模块
5.5.5 Pytorch中的Transformer模块
5.6 本章总结
第6章 PyTorch自然语言处理案例
6.1 word2vec算法训练词向量
6.1.1 单词表的创建
6.1.2 word2vec算法的实现
6.1.3 word2vec算法的特性
6.2 基于循环神经网络的情感分析
6.3 基于循环神经网络的语言模型
6.3.1 语言模型简介
6.3.2 语言模型的代码
6.4 Seq2Seq模型及其应用
6.4.1 Seq2Seq模型的结构
6.4.2 Seq2Seq模型编码器的代码
6.4.3 Seq2Seq模型注意力机制的代码
6.4.4 Seq2Seq模型解码器的代码
6.5 BERT模型及其应用
6.5.1 BERT模型的结构
6.5.2 BERT模型的训练方法
6.5.3 BERT模型的微调
6.6 本章总结
第7章 其他重要模型
7.1 基于宽深模型的推荐系统
7.1.1 推荐系统介绍
7.1.2 宽深模型介绍
7.2 DeepSpeech模型和CTC损失函数
7.2.1 语音识别模型介绍
7.2.2 CTC损失函数
7.3 使用Tacotron和WaveNet进行语音合成
7.3.1 Tacotron模型中基于Seq2Seq的梅尔过滤器特征合成
7.3.2 Tacotron模型的代码
7.3.3 WaveNet模型介绍
7.3.4 因果卷积模块介绍
7.3.5 因果卷积模块的代码
7.3.6 WaveNet模型的代码
7.4 基于DQN的强化学习算法
7.4.1 强化学习的基础概念
7.4.2 强化学习的环境
7.4.3 DQN模型的原理
7.4.4 DQN模型及其训练过程
7.5 使用半精度浮点数训练模型
7.5.1 半精度浮点数的介绍
7.5.2 半精度模型的训练
7.5.3 apex扩展包的使用
7.6 本章总结
第8章 PyTorch高级应用
8.1 PyTorch自定义激活函数和梯度
8.2 在PyTorch中编写扩展
8.3 正向传播和反向传播的钩子
8.4 PyTorch的静态计算图
8.5 静态计算图模型的保存和使用
8.6 本章总结
第9章 PyTorch源代码解析
9.1 ATen张量计算库简介
9.2 C++的Python接口
9.3 csrc模块简介
9.4 autograd和自动求导机制
9.5 C10张量计算库简介
9.6 本章总结
参考资料
前言
  推荐序
  深度学习的浪潮已经席卷了各行各业,从一开始被图像识别、自然语言处理这些相关专业领域的学者和技术人员熟悉到围棋领域由Google公司的AlphaGo一举成名,被普罗大众所熟悉也就用了三四年时间。在这之后,深度学习继续在各领域生根发芽并将会继续取得丰硕成果。
  要学习深度学习,除了学习深度学习的相关理论知识,还要学习各大框架的使用方法。作为深度学习模型的载体,现在实现深度学习的框架主要有Tensorflow和PyTorch,还有一些其他框架如mxnet、CNTK和Chainer等。而PyTorch自2016年10月首次对外发布以来,仅花了两年时间就可以和Tensorflow分庭抗礼,这与PyTorch的高性能和易用性是分不开的。截止2019年为止,深度学习的主要会议如NIPS、ICCV、CVPR、ICML等都有50%~80%的会议论文使用了PyTorch,这也说明了PyTorch的简明易用、高性能等特点吸引了大量学术界的用户。
  现在市面上讲解PyTorch的入门级书已经有了很多,这些书分别从安装、使用和简单示例角度入手讲解PyTorch,其优点是通俗易懂,但还是缺少一些从底层模块角度讲解PyTorch内容的书来帮助读者进一步了解并用好PyTorch。而本书最大的优点就是囊括了PyTorch的常用模块,并给模块配备了不同使用方法的代码和代码背后的底层模块如何实现的逻辑,以便引导用户入门PyTorch后继续探索PyTorch的各种用法,进而提升科研和工作效率。除此以外,本书还囊括了近几年学术界和工业界都很常用的诸多热门模型,如SSD、FCN、GAN、LSTM和BERT等的PyTorch实现,省去了读者去网上搜索相关实现的烦琐。本书最后专门介绍了PyTorch的一些高级使用方法,例如,如何编写算子和自动求导机制,这可以帮助对PyTorch有进一步开发需求的研究者和学习者开发需要的算子。
  本书作者张校捷自博士毕业以后一直从事PyTorch相关的工作,相信他在NVIDIA公司的相关工作经验能帮助到广大读者更深入地了解PyTorch,从而学好深度学习。作为他的师兄,鄙人也很荣幸为本书作序。
  最后,希望本书的出版能为国内的深度学习社区添砖加瓦,能吸引更多热爱深度学习的人加入到这个领域里。
  Intel IAGS软件工程师 石元坤
精彩书摘
  除在计算机视觉上的优异表现外,深度学习在自然语言处理(Natural Language Processing,NLP)任务中也得到了广泛的应用,而且在许多任务中表现优异。在各项自然语言处理的任务中,机器翻译(Machine Translation)作为自然语言处理的核心任务之一,很好地体现了深度学习模型的强大威力,用于机器翻译的模型称为神经网络机器翻译(Neural Machine Translation,NMT)。早在基于神经网络的机器翻译算法发明之前,人们就开始研究基于机器学习和统计模型的机器翻译,这种机器翻译被称为统计机器翻译(Statistical Machine Translation,SMT)。这个算法的主要原理是创建一个源语言和目标语言对应的数据库,然后构建一个机器学习模型根据源语言的单词或词组计算概率最大的目标语言的对应单词或词组。其主要缺点是需要花费大量时间进行预处理(构建对应的词汇数据库),而且算法很难考虑整个句子中单词之间的相关性(即单词的上下文语义)。相比之下,神经网络机器翻译不需要复杂的预处理(直接使用单词构造词向量),而且能够很容易地考虑上下文的单词(使用循环神经网络或者注意力机制),从而有效地提高了翻译结果的准确性和流畅性。神经机器翻译相对于统计机器翻译的优势可以通过图1.4表现出来。从图中可以看到,神经机器翻译算法(在图中使用的是GNMT模型12)相对于统计机器翻译算法(在图中使用的是PBMT模型13)在翻译质量上有着明显的优势,有的语言之间的翻译(比如法语到英语之间的翻译)因为语言之间的相似性甚至已经接近了人类的水平。虽然在现阶段的技术条件下,神经网络机器翻译和人类的翻译水平还有一定距离,但是随着技术的不断进步,可以预见在将来,深度学习在机器翻译方面将会逐渐赶上甚至超过人类的水平。