猜你喜欢
PyTorch深度学习实战:从新手小白到数据科学家

PyTorch深度学习实战:从新手小白到数据科学家

书籍作者:张敏 ISBN:9787121388293
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8872
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书以深度学习为核心,详细讲解Pytorch技术堆栈,力求使用最直白的语言,带更多的小白学员入门甚至精通深度学习。本书共分为10个章节,前五个章节主要讲解深度学习中的基本算法及概念,通过使用Pytorch实现经典的神经网络并辅以"课后加油站”小节补充数学知识,力求让每一个知识点、每一个章节、每一个实验都能在学员脑海中留下印象,做到看了能做、做了能会、会了能用。后面五个章节作为Pytorch的进阶,会讲使用Pytorch构建深度神经网络、使用HMM实现中文分词、训练聊天机器人等有意思的小实验。引入当下***的自然语言预训练模型如Elmo、BERT等,教会读者使用自然语言利器AllenNLP及高阶框架FastAI。最后一章讲解当下***的图嵌入技术,对知识图谱感兴趣的童鞋可以深入的研究。

作者简介

张敏,2015年开始从事大数据行业,多年来一直致力于数据分析和算法开发。2017年开始接触在线教育,目前全网学员总数破100万,相继在51CTO、腾讯课堂、网易课堂、CSDN等平台开启教学。在51CTO平台上的SPARK课程销量做到行业类目前列,曾在多家大公司从事数据挖掘工作,拥有丰富的大数据经验和底层数据思维。在工作中总结了很多有用的经验,都毫无保留地分享给读者,以帮助读者提升、成长。

编辑推荐
适读人群 :本书引入了当下非常流行的自然语言预训练模型,如ELMo、BERT等,使读者能够使用自然语言利器AllenNLP及高层框架FastAI。最后讲解当下非常流行的大型图嵌入技术,对知识图谱感兴趣的读者可以做深入研究。

很系统:从理论到实战,带你系统学习PyTorch

很实用:凝聚作者教学经验,切中读者入门痛点

很深入:通过小试牛刀、知识加油站,加深理解

重实战:包含50多个实战案例,可拿来就用


前言

近年来,随着大数据、机器学习、深度学习等技术的发展,以及物理硬件性能的提升,越来越多优秀的大数据人工智能项目落地,为社会带来巨大便利的同时也为从事该行业的技术人员带来了前所未有的机遇。越来越多的公司和个人开始关注并学习AI知识,各大厂商也在AI技术及人才培养上投入巨资,纷纷抢占战略高地。笔者所在的公司也成立了AI研究室,从事算法及大数据相关的研究及落地工作,在此过程中会涉及很多开源的框架及技术,由于笔者有教育行业的从业经历,所以想通过出版图书的途径帮助更多的学生及普通的程序员学习AI技能。时势造英雄,希望更多的人可以把握当前的时势,蓄势待发,冲刺人生的高峰。

为了迎合各个层次读者的需求,笔者在编写过程中既兼顾内容的质量,也注重趣味性。鉴于此,笔者采用项目驱动的方式编写本书,部分章设有“实验室小试牛刀”环节,以项目实战的形式总结该章所学知识,并引出下一章的内容。“实验室小试牛刀”环节是实验性质的实战项目,兼顾趣味性,主要培养读者的动手能力。“加油站”部分回顾必要的数学知识,在学习新知识的同时,使读者可以夯实数学基础,为走得更轻松、更长远积蓄能量。

本书分为10章,内容循序渐进,由浅入深。

第1章首先介绍AI发展简史、主流的深度学习框架和框架的演变;其次介绍安装PyTorch环境及开发工具;再次介绍核心概念,包括PyTorch核心模块、自动微分等,在“实验室小试牛刀”环节,使用PyTorch进行科学计算和薪酬预测,读者可以由此了解PyTorch关于科学计算的知识及初探使用PyTorch构建算法模型;最后补充数学知识,为读者学习第2章的内容奠定基础。

第2章是机器学习基础章节,讲述机器学习的分类、常见概念,扫清读者学习途径上的认知障碍,帮助读者更好地理解机器学习与深度学习。本章还会引出机器学习和神经网络算法,使读者对算法发展史有清晰的认识,同时引出神经网络的概念。神经网络的灵感来自人类对大脑神经的生物学发现,通过模拟人类大脑的工作原理,构建出能拟合任意复杂度的深度神经网络。神经网络的训练需要借助BP算法,该算法会涉及微分、导数、偏导数等数学知识,读者可以在“加油站之高等数学知识回顾”部分再次进行复习和巩固。


第3章详细介绍PyTorch中的Tensor及科学计算算子,通过详细地介绍每个算子的用法及功能,读者可以掌握使用PyTorch的法宝。本章还介绍了PyTorch中的变量Variable,Variable是Tensor的包装类型,为PyTorch进行深度学习的训练提供支持。PyTorch中的算子和Python科学计算库NumPy提供的算子非常相似,实际上,PyTorch中的Tensor和NumPy能够进行高效互转,在本章的“实验室小试牛刀之轻松搞定图片分类”环节,读者可以使用PyTorch构建神经网络,探索PyTorch构建神经网络的简捷性及调试的方便性。

第4章主要介绍激活函数、损失函数、优化器及数据加载等相关知识点。PyTorch可以提供高层次的API封装,在torch.optim、torch.nn等模块中,提供了更加简捷的方法调用。torch.optim模块封装了常用的优化算法,如随机梯度下降(Stochastic Gradient Descent,SGD)算法、Momentum梯度下降算法等。torch.nn模块提供了常见的神经网络层,如线性层、一维卷积、二维卷积、长短期记忆(Long Short-Term Memory,LSTM)和门控循环单元(Gated Recurrent Unit,GRU)等。所有网络的学习,最终的输出结果都要使用一个度量的函数测评效果,这个函数通常称为损失函数。通过损失函数及BP算法,可以将损失进行逆向传播,每步传播都会计算各个特征权重的偏导数,进而更新特征权重,达到训练的目的。本章会详细讲解各种损失函数及其应用场景,相信读者会有所领悟。所有模型在构建完成后,都将传入数据进行训练,而数据的加载有时是很麻烦的,PyTorch提供了DataLoader等接口,这些接口实现了生成器模式,因此适用于大数据量的加载,不会出现内存溢出的问题。在“实验室小试牛刀”环节,会探索第一个深度神经网络VGG-16,并且使用PyTorch计算机视觉库简化网络的构建过程,在构建过程中会冻结VGG-16的网络层权重,更改VGG-16最后的输出层,使其适用于特定的应用场景,而这种技术被称为迁移学习。通过实践迁移学习,读者可以掌握复用预训练模型并用于特定应用场景的核心技巧。

第5章主要讲计算机视觉,本章介绍典型的计算机视觉模型,包括DCGAN、ResNet、Inception、DenseNet等;除此之外,LSTM和GRU也是深度神经网络序列模型中经常出现的结构。本章通过TensorBoard和Visdom可视化训练过程,帮助读者理解网络内部正在发生什么。

第6章安排的内容和自然语言处理相关。自然语言处理是人工智能最后需要解决的难题,被誉为“人工智能皇冠上的明珠”。自然语言处理的内容包括语义理解、文本分类、分词、词性标注、语义消歧等。每个问题都有亟须解决的难题,如中文分词、自然语言理解等。虽然自然语言领域出现了很多优秀的算法和思路,如BERT、LSTM、TextRank等,但是效果仍然欠佳,因此这是一个需要持续被关注的研究领域。本书关注的是如何带领读者使用PyTorch进行自然语言处理,使用PyTorch已经实现的算法和工具解决业务中遇到的问题。本章不仅简单介绍了自然语言的发展及现在所处的阶段,还介绍了TextRank算法、HMM在分词等方面的应用,并使用HMM实现中文分词算法。在“实验室小试牛刀之对话机器人”环节,我们会创建一个对话机器人,希望读者可以用自己的语料训练出一个有趣的对话机器人。

第7章是自然语言处理技术的扩展章节,主要介绍当前非常流行的自然语言预训练模型,包括词嵌入、ELMo、GPT、BERT等。通过对比各个模型框架的演变,读者可以了解自然语言处理技术的发展方向,为深入研究自然语言处理奠定基础。

第8章主要介绍AllenNLP。AllenNLP是构建在PyTorch之上的高层架构,提供了常见且丰富的自然语言处理功能。从事自然语言处理工作的读者都应该关注AllenNLP,因为其提供的接口方便、灵活。

第9章主要介绍FastAI高层深度学习框架,用10行代码解决深度学习难题,其底层基于PyTorch实现。本章在FastAI框架中使用BERT中文预训练模型完成中文文本分类任务,相信读者会喜欢其编码。

第10章介绍PyTorch Big Graph嵌入,带领读者领略图挖掘的前沿思想。“知识图谱”的概念悄悄地走进了人们的视野,各大公司和实验室都在使用深度学习技术构建各个领域的知识图谱,而基于知识图谱的知识挖掘无疑成了下一个研究的热点。

本书涉及的内容不仅包括计算机视觉、自然语言处理等深度学习应用的前沿技术,还涉及基本数学公式的推导,使读者不仅会用,还知其原理,知其然也知其所以然。本书内容丰富,涉及面广,难免有疏忽遗漏之处,望广大读者批评指正。

另外,本书涉及的公式,若不做特殊说明,则对数log的底数默认为自然常数e。


目录

目录
第1章 初识PyTorch 1
1.1 神经网络发展简史 1
1.1.1 神经网络的前世今生 1
1.1.2 深度学习框架对比 3
1.2 环境安装 6
1.2.1 Python环境的选择及安装 6
1.2.2 PyTorch 1.2的安装 8
1.2.3 开发环境IDE 10
1.3 PyTorch的核心概念 11
1.3.1 PyTorch的基本概念 11
1.3.2 自动微分 16
1.3.3 PyTorch的核心模块 19
1.4 实验室小试牛刀 20
1.4.1 塔珀自指公式 20
1.4.2 看看你毕业了能拿多少 22
1.5 加油站之高等数学知识回顾 39
1.5.1 函数基础知识 39
1.5.2 常见的导数公式 45
第2章 机器学习快速入门 49
2.1 机器学习的分类 49
2.1.1 监督学习 49
2.1.2 半监督学习 51
2.1.3 无监督学习 51
2.1.4 强化学习 52
2.2 机器学习的常见概念 54
2.2.1 缺失值处理 54
2.2.2 数据标准化与数据正则化 56
2.2.3 交叉验证 59
2.2.4 过拟合与欠拟合 61
2.3 神经网络 62
2.3.1 神经网络的生物学发现与编程模拟 62
2.3.2 人工神经网络的核心思想 69
2.4 实现线性回归、多项式回归和逻辑回归 70
2.4.1 PyTorch实现线性回归 70
2.4.2 PyTorch实现多项式回归 73
2.4.3 PyTorch实现逻辑回归 77
2.5 加油站之高等数学知识回顾 82
2.5.1 方向导数和梯度 82
2.5.2 微分及积分 84
2.5.3 牛顿-莱布尼兹公式 87
第3章 PyTorch与科学计算 89
3.1 算子字典 89
3.1.1 基本方法 89
3.1.2 索引、切片、连接和换位 91
3.1.3 随机抽样 95
3.1.4 数据持久化与高并发 97
3.1.5 元素级别的数学计算 98
3.1.6 规约计算 102
3.1.7 数值比较运算 104
3.1.8 矩阵运算 106
3.2 广播机制 110
3.2.1 自动广播规则 110
3.2.2 广播计算规则 111
3.3 GPU设备及并行编程 112
3.3.1 device和cuda.device的基本用法 112
3.3.2 CPU设备到GPU设备 113
3.3.3 固定缓冲区 115
3.3.4 自动设备感知 117
3.3.5 并发编程 118
3.4 实验室小试牛刀之轻松搞定图片分类 121
3.4.1 softmax分类简介 123
3.4.2 定义网络结构 126
3.5 加油站之高等数学知识回顾 133
3.5.1 泰勒公式及其思想 133
3.5.2 拉格朗日乘子法及其思想 138
第4章 激活函数、损失函数、优化器及数据加载 140
4.1 激活函数 140
4.1.1 Sigmoid 141
4.1.2 tanh 143
4.1.3 ReLU及其变形 145
4.1.4 MaxOut 148
4.2 损失函数 150
4.2.1 L1范数损失 150
4.2.2 均方误差损失 151
4.2.3 二分类交叉熵损失 152
4.2.4 CrossEntropyLoss和NLLLoss计算交叉熵损失 152
4.2.5 KL散度损失 154
4.2.6 余弦相似度损失 155
4.2.7 多分类多标签损失 156
4.3 优化器 157
4.3.1 BGD 157
4.3.2 SGD 158
4.3.3 MBGD 159
4.3.4 Momentum 160
4.3.5 NAG 161
4.3.6 Adagrad 161
4.3.7 Adadelta 162
4.3.8 Adam 163
4.4 数据加载 164
4.4.1 Dataset数据集 164
4.4.2 DataLoader数据加载 167
4.5 初探卷积神经网络 169
4.5.1 知识科普:卷积过程及物理意义 169
4.5.2 卷积神经网络 173
4.5.3 stride和padding 179
4.5.4 膨胀卷积神经网络 180
4.5.5 池化 182
4.6 实验室小试牛刀 184
4.6.1 设计卷积神经网络 184
4.6.2 定义卷积神经网络 185
4.6.3 模型训练 186
4.6.4 理解卷积神经网络在学什么 189
第5章 PyTorch深度神经网络 201
5.1 计算机视觉工具包 201
5.2 训练过程的可视化 204
5.2.1 TensorBoard 204
5.2.2 Visdom 210
5.3 深度神经网络 212
5.3.1 LeNet 212
5.3.2 AlexNet 214
5.3.3 ZF-Net 217
5.3.4 VGG-Nets 219
5.3.5 GoogLeNet 222
5.3.6 ResNet 224
5.3.7 DenseNet 226
5.4 循环神经网络 228
5.4.1 循环神经网络基础模型 229
5.4.2 LSTM 233
5.4.3 GRU 238
5.5 实验室小试牛刀 240
5.5.1 数据准备 241
5.5.2 GRU网络设计 242
5.5.3 模型训练 244
5.5.4 模型预测 245
5.6 加油站之概率论基础知识回顾 246
5.6.1 离散型随机变量和连续型随机变量 246
5.6.2 概率论常用概念 251
5.6.3 二维随机变量 253
5.6.4 边缘分布 255
5.6.5 期望和方差 257
5.6.6 大数定理 258
5.6.7 马尔可夫不等式及切比雪夫不等式 259
5.6.8 中心极限定理 260
第6章 自然语言处理 261
6.1 自然语言基础 261
6.1.1 自然语言发展史 261
6.1.2 自然语言处理中的常见任务 264
6.1.3 统计自然语言理论 266
6.1.4 使用隐马尔可夫模型实现中文分词 278
6.2 提取关键字 281
6.2.1 TF-IDF 281
6.2.2 TextRank 283
6.2.3 主题模型 284
6.3 Word2vec和词嵌入 285
6.3.1 N-Gram模型 286
6.3.2 词袋模型 287
6.3.3 Word2vec词向量的密集表示 288
6.3.4 使用Word2vec生成词向量 297
6.3.5 Word2vec源码调试 299
6.3.6 在PyTorch中使用词向量 300
6.4 变长序列处理 302
6.4.1 pack_padded_sequence压缩 304
6.4.2 pad_packed_sequence解压缩 306
6.5 Encoder-Decoder框架和注意力机制 307
6.5.1 Encoder-Decoder框架 308
6.5.2 注意力机制 309
6.6 实验室小试牛刀之对话机器人 312
6.6.1 中文对话语料 313
6.6.2 构建问答词典 313
6.6.3 DataLoader数据加载 315
6.6.4 Encoder双向多层GRU 318
6.6.5 运用注意力机制 320
6.6.6 Decoder多层GRU 321
6.6.7 模型训练 323
6.6.8 答案搜索及效果展示 324
6.7 加油站之常见的几种概率分布 326
6.7.1 二项分布 326
6.7.2 正态分布 327
6.7.3 均匀分布 328
6.7.4 泊松分布 330
6.7.5 卡方分布 332
6.7.6 Beta分布 333
第7章 自然语言的曙光:预训练模型 336
7.1 预训练模型的应用 336
7.2 从词嵌入到ELMo 337
7.2.1 词嵌入头上的乌云 337
7.2.2 ELMo 338
7.3 从ELMo模型到GPT模型 341
7.3.1 GPT模型 341
7.3.2 使用GPT模型 342
7.4 从GPT模型到BERT模型 344
第8章 自然语言处理利器:AllenNLP 349
8.1 中文词性标注 349
8.1.1 DatasetReader数据读取 350
8.1.2 定义Model模型 352
8.1.3 模型训练 354
8.1.4 模型预测 355
8.1.5 模型保存和加载 356
8.2 AllenNLP 使用Config Files 356
8.2.1 参数解析 357
8.2.2 注册数据读取器和模型 357
8.2.3 定义Jsonnet配置文件 357
8.2.4 命令行工具 359
8.2.5 特征融合 360
8.2.6 制作在线Demo 362
第9章 FastAI高层深度学习框架 364
9.1 FastAI框架中的原语 364
9.2 在FastAI框架中使用BERT模型完成中文分类 365
9.2.1 分词器 365
9.2.2 定义字典 368
9.2.3 数据准备 368
9.2.4 构建Databunch和Learner 370
9.2.5 模型训练 371
9.2.6 模型保存和加载 371
9.2.7 模型预测 372
9.2.8 制作Rest接口提供服务 372
第10章 PyTorch Big Graph嵌入 374
10.1 PyTorch Big Graph简介 374
10.1.1 PBG模型 375
10.1.2 模型的表示 376
10.1.3 正样本、负样本及损失函数 377
10.1.4 分布式训练 377
10.1.5 批量负采样 379
10.2 PBG实践应用 379
10.2.1 模型配置文件 380
10.2.2 划分训练集和测试集 381
10.2.3 模型训练和验证 382
10.2.4 图嵌入向量及应用 384

短评

书很新,包装很好

2020-08-25 09:04:13

从理论到实战带你系统学习pytorch,博文视点的书都还不错

2020-09-25 10:18:05

这一次买了好几本书,基本都超级实用,正好要学习python和spring方面的内容,碰上了在做活动就一鼓作气全都买了回去。

2020-09-14 16:33:35

书中有一半的篇幅再讲自然语言处理,对于学自然语言处理的入门者比较有意义。前半部分对pytorc的讲解比较容易掌握。

2020-08-25 01:48:55