书籍作者:陈云 | ISBN:9787121330773 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:5446 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《深度学习框架PyTorch:入门与实践》从多维数组Tensor开始,循序渐进地带领读者了解PyTorch各方面的基础知识。结合基础知识和前沿研究,带领读者从零开始完成几个经典有趣的深度学习小项目,包括GAN生成动漫头像、AI滤镜、AI写诗等。《深度学习框架PyTorch:入门与实践》没有简单机械地介绍各个函数接口的使用,而是尝试分门别类、循序渐进地向读者介绍PyTorch的知识,希望读者对PyTorch有一个完整的认识。
《深度学习框架PyTorch:入门与实践》内容由浅入深,无论是深度学习的初学者,还是头次接触PyTorch的研究人员,都能在学习本书的过程中快速掌握PyTorch。即使是有一定PyTorch使用经验的用户,也能够从本书中获得对PyTorch不一样的理解。
陈云
Python程序员、Linux爱好者和PyTorch源码贡献者。主要研究方向包括计算机视觉和机器学习。“2017知乎看山杯机器学习挑战赛”一等奖,“2017天池医疗AI大赛”第八名。 热衷于推广PyTorch,并有丰富的使用经验,活跃于PyTorch论坛和知乎相关板块。
本书包含PyTorch基础知识+实战案例两部分
提供notebook,方便读者交互性学习
梳理PyTorch基础知识及重点、难点
翔实的案例,案例包括Kaggle竞赛中经典项目、GAN生成动漫头像、AI滤镜、RNN写诗、图像描述任务
配套源代码文件供下载、读者交流QQ群
为什么写这本书
2016年是属于TensorFlow的一年,凭借谷歌的大力推广,TensorFlow占据了各大媒体的头条。2017年年初,PyTorch的横空出世吸引了研究人员极大的关注,PyTorch简洁优雅的设计、统一易用的接口、追风逐电的速度和变化无方的灵活性给人留下深刻的印象。
作为一门2017年刚刚发布的深度学习框架,研究人员所能获取的学习资料有限,中文资料更是比较少。笔者长期关注PyTorch发展,经常在论坛上帮助PyTorch新手解决问题,在平时的科研中利用PyTorch进行各个方面的研究,有着丰富的使用经验。看到国内的用户对PyTorch十分感兴趣,迫切需要一本能够全面讲解PyTorch的书籍,于是本书就这么诞生了。
本书的结构
本书分为两部分:第2~5章主要介绍PyTorch的基础知识。
√ 第2章介绍PyTorch的安装和配置学习环境。同时以最概要的方式介绍PyTorch的主要内容,让读者对PyTorch有一个大概的整体印象。
√ 第3章介绍PyTorch中多维数组Tensor和动态图autograd/Variable的使用,并配以例子,让读者分别使用Tensor和autograd实现线性回归,比较二者的不同点。本章还对Tensor的底层设计,以及autograd的原理进行了分析,给读者以更全面具体的讲解。
√ 第4章介绍PyTorch中神经网络模块nn的基础用法,同时讲解了神经网络中的“层”、“损失函数”、“优化器”等,最后带领读者用不到50行的代码搭建出曾夺得ImageNet冠军的ResNet。
√ 第5章介绍PyTorch中数据加载、GPU加速和可视化等相关工具。
第6~10章主要介绍实战案例。
√ 第6章是承上启下的一章,目标不是教会读者新函数、新知识,而是结合Kaggle中一个经典的比赛,实现一个深度学习中比较简单的图像二分类问题。在实现的过程中,带领读者复习前5章的知识,并提出代码规范以合理地组织程序和代码,使程序更可读、可维护。第6章还介绍在PyTorch中如何进行debug。
√ 第7章为读者讲解当前最火爆的生成对抗网络(GAN),带领读者从零开始实现一个动漫头像生成器,能够利用GAN生成风格多变的动漫头像。
√ 第8章为读者讲解风格迁移的相关知识,并带领读者实现风格迁移网络,将自己的照片变成“高大上”的名画。
√ 第9章为读者讲解一些自然语言处理的基础知识,并讲解CharRNN的原理。然后利用其收集几万首唐诗,训练出一个可以自动写诗歌的小程序。这个小程序可以控制生成诗歌的格式和意境,还能生成藏头诗。
√ 第10章为读者介绍图像描述任务,并以最新的AI Challenger比赛的数据为例,带领读者实现一个可以进行简单图像描述的小程序。
第1章和第11章是本书的首章和末章,第1章介绍PyTorch的优势,以及和市面上其他几款框架的对比。第11章是对本书的总结,以及对PyTorch不足之处的思考,同时对读者未来的学习提出建议。
关于代码
本书的所有代码都开源在GitHub【https://github.com/chenyuntc/pytorch-book】上,其中:
√ 第2~5章的代码以Jupyter Notebook形式提供,读者可以在自己的计算机上交互式地修改运行它。
√ 第6~10章的代码以单独的程序给出,每个函数的作用与细节在代码中有大量的注释。
本书的代码,在最新版的PyTorch 0.2上运行,同时支持Python 2 和Python 3,其中:
√ 前5章的代码同时在Python 2.7和Python 3.5上验证,并得到最终结果。
√ 第6~10章的代码,主要在Python 2.7上运行并得到最终结果,同时在Python 3.5上测试未报错。
适读人群
学习本书需要读者具备以下基础知识:
√ 了解Python的基础语法,掌握基础的Python使用方法。
√ 有一定深度学习基础,了解反向传播、卷积神经网络等基础知识,但并不要求深入了解。
√ 具备梯度、导数等高中数学基础知识。
以下知识不是必需的,但最好了解:
√ numpy的使用。
√ 深度学习的基本流程或者其他深度学习框架的使用。
本书不适合哪些读者:
√ 没有任何深度学习基础的用户。
√ 没有Python基础的用户。
√ 只能使用Windows的用户。
本书约定
在本书中,笔者是本书编著者的自称,作者指的是软件、论文等的作者,读者指阅读本书的你。
本书前5章的代码由Jupyter Notebook转换而来,其中:
√ In后面跟着的是输入的代码。
√ Out是指程序的运行结果,运行结果取决于In的最后一行。
√ Print后面跟着程序的打印输出内容,只有在In程序中调用了 print 函数/语句才会有Print输出。
√ Jupyter会自动输出Image对象和matplotlib可视化结果,所以书中以“程序输出”命名的图片都来自Jupyter的程序输出。这些图片的说明在代码注释中。
如何使用本书
本书第2章是PyTorch快速入门,第3~5章是对这些内容的详细深入介绍。第6章是一个简单而完整的深度学习案例。
如果你是经验丰富的研究人员,之前对PyTorch十分熟悉,对本书的某些例子比较感兴趣,那么你可以跳过前5章,直接阅读第6章,了解这些例子的程序设计与文件组织安排,然后阅读相应的例子。
如果你是初学者,想以最快的速度掌握PyTorch并将PyTorch应用到实际项目中,那么你可以花费2~3小时阅读2.2节的相关内容。如果你需要深入了解某部分的内容,那么可以阅读相应章节。
如果你是初学者,想完整全面地掌握PyTorch,那么建议你:
√ 先阅读第1~5章,了解PyTorch的各个基础知识。
√ 再阅读第6章,了解PyTorch实践中的技巧。
√ 最后从第7~10章挑选出感兴趣的例子,动手实践。
最后,希望读者在阅读本书的时候,尽量结合本书的配套代码阅读、修改、运行之。
致谢
杜玉姣同学在我编写本书的时候,给了我许多建议,并协助审阅了部分章节,在此特向她表示谢意。在编写本书时,本书编辑郑柳洁女士给予了很大的帮助,在此特向她致谢。感谢我的家人一直以来对我的支持,感谢我的导师肖波副教授对我的指导。感谢我的同学、师弟师妹们,他们在使用PyTorch中遇到了很多问题,给了我许多反馈意见。
由于笔者水平所限,书中难免有错误和不当之处,欢迎读者批评指正。具体意见可以发表在GitHub上的issue(https://github.com/chenyuntc/pytorch-book/issues)中。
1 PyTorch简介
1.1 PyTorch的诞生 1
1.2 常见的深度学习框架简介 2
1.2.1 Theano 3
1.2.2 TensorFlow 3
1.2.3 Keras 5
1.2.4 Caffe/Caffe2 5
1.2.5 MXNet 6
1.2.6 CNTK 7
1.2.7 其他框架 8
1.3 属于动态图的未来 8
1.4 为什么选择PyTorch 10
1.5 星火燎原 12
1.6 fast.ai 放弃Keras+TensorFlow选择PyTorch 13
2 快速入门 16
2.1 安装与配置 16
2.1.1 安装PyTorch 16
2.1.2 学习环境配置 20
2.2 PyTorch入门第一步 30
2.2.1 Tensor 30
2.2.2 Autograd:自动微分 35
2.2.3 神经网络 38
2.2.4 小试牛刀:CIFAR-10分类 43
3 Tensor和autograd 51
3.1 Tensor 51
3.1.1 基础操作 52
3.1.2 Tensor和Numpy 70
3.1.3 内部结构 73
3.1.4 其他有关Tensor的话题 76
3.1.5 小试牛刀:线性回归 78
3.2 autograd 81
3.2.1 Variable 82
3.2.2 计算图 86
3.2.3 扩展autograd 95
3.2.4 小试牛刀:用Variable实现线性回归 100
4 神经网络工具箱nn 104
4.1 nn.Module 104
4.2 常用的神经网络层 108
4.2.1 图像相关层 108
4.2.2 激活函数 111
4.2.3 循环神经网络层 115
4.2.4 损失函数 117
4.3 优化器 117
4.4 nn.functional 119
4.5 初始化策略 121
4.6 nn.Module深入分析 123
4.7 nn和autograd的关系 130
4.8 小试牛刀:用50行代码搭建ResNet 131
5 PyTorch中常用的工具 136
5.1 数据处理 136
5.2 计算机视觉工具包:torchvision 148
5.3 可视化工具 150
5.3.1 Tensorboard 151
5.3.2 visdom 153
5.4 使用GPU加速:cuda 159
5.5 持久化 162
6 PyTorch实战指南 165
6.1 编程实战:猫和狗二分类 165
6.1.1 比赛介绍 166
6.1.2 文件组织架构 166
6.1.3 关于__init__.py 168
6.1.4 数据加载 168
6.1.5 模型定义 171
6.1.6 工具函数 172
6.1.7 配置文件 175
6.1.8 main.py 177
6.1.9 使用 185
6.1.10 争议 186
6.2 PyTorch Debug 指南 188
6.2.1 ipdb 介绍 188
6.2.2 在PyTorch中Debug 192
7 AI插画师:生成对抗网络 198
7.1 GAN的原理简介 199
7.2 用GAN生成动漫头像 203
7.3 实验结果分析 212
8 AI艺术家:神经网络风格迁移 216
8.1 风格迁移原理介绍 217
8.2 用PyTorch实现风格迁移 223
8.3 实验结果分析 234
9 AI诗人:用RNN写诗 238
9.1 自然语言处理的基础知识 238
9.1.1 词向量 239
9.1.2 RNN 241
9.2 CharRNN 244
9.3 用PyTorch实现CharRNN 247
9.4 实验结果分析 258
10 Image Caption:让神经网络看图讲故事 261
10.1 图像描述介绍 262
10.2 数据 263
10.2.1 数据介绍 263
10.2.2 图像数据处理 271
10.2.3 数据加载 273
10.3 模型与训练 276
10.4 实验结果分析 281
11 展望与未来 283
11.1 PyTorch的局限与发展 283
11.2 使用建议 287