编辑推荐

适读人群:深度学习框架PyTorch入门者、人工智能领域从业者等。

深度学习框架PyTorch:入门与实践》包含PyTorch基础知识+实战案例两部分

提供notebook,方便读者交互性学习

梳理PyTorch基础知识及重点、难点

翔实的案例,案例包括Kaggle竞赛中经典项目、GAN生成动漫头像、AI滤镜、RNN写诗、图像描述任务

配套源代码文件供下载、读者交流QQ群

内容简介

《深度学习框架PyTorch:入门与实践》从多维数组Tensor开始,循序渐进地带领读者了解PyTorch各方面的基础知识。结合基础知识和前沿研究,带领读者从零开始完成几个经典有趣的深度学习小项目,包括GAN生成动漫头像、AI滤镜、AI写诗等。《深度学习框架PyTorch:入门与实践》没有简单机械地介绍各个函数接口的使用,而是尝试分门别类、循序渐进地向读者介绍PyTorch的知识,希望读者对PyTorch有一个完整的认识。

《深度学习框架PyTorch:入门与实践》内容由浅入深,无论是深度学习的初学者,还是头次接触PyTorch的研究人员,都能在学习《深度学习框架PyTorch:入门与实践》的过程中快速掌握PyTorch。即使是有一定PyTorch使用经验的用户,也能够从《深度学习框架PyTorch:入门与实践》中获得对PyTorch不一样的理解。

作者简介

陈云

Python程序员、Linux爱好者和PyTorch源码贡献者。主要研究方向包括计算机视觉和机器学习。“2017知乎看山杯机器学习挑战赛”一等奖,“2017天池医疗AI大赛”第八名。热衷于推广PyTorch,并有丰富的使用经验,活跃于PyTorch论坛和知乎相关板块。

目录

1PyTorch简介

1.1PyTorch的诞生1

1.2常见的深度学习框架简介2

1.2.1Theano3

1.2.2TensorFlow3

1.2.3Keras5

1.2.4Caffe/Caffe25

1.2.5MXNet6

1.2.6CNTK7

1.2.7其他框架8

1.3属于动态图的未来8

1.4为什么选择PyTorch10

1.5星火燎原12

1.6fast.ai放弃Keras+TensorFlow选择PyTorch13

2快速入门16

2.1安装与配置16

2.1.1安装PyTorch16

2.1.2学习环境配置20

2.2PyTorch入门第一步30

2.2.1Tensor30

2.2.2Autograd:自动微分35

2.2.3神经网络38

2.2.4小试牛刀:CIFAR-10分类43

3Tensor和autograd51

3.1Tensor51

3.1.1基础操作52

3.1.2Tensor和Numpy70

3.1.3内部结构73

3.1.4其他有关Tensor的话题76

3.1.5小试牛刀:线性回归78

3.2autograd81

3.2.1Variable82

3.2.2计算图86

3.2.3扩展autograd95

3.2.4小试牛刀:用Variable实现线性回归100

4神经网络工具箱nn104

4.1nn.Module104

4.2常用的神经网络层108

4.2.1图像相关层108

4.2.2激活函数111

4.2.3循环神经网络层115

4.2.4损失函数117

4.3优化器117

4.4nn.functional119

4.5初始化策略121

4.6nn.Module深入分析123

4.7nn和autograd的关系130

4.8小试牛刀:用50行代码搭建ResNet131

5PyTorch中常用的工具136

5.1数据处理136

5.2计算机视觉工具包:torchvision148

5.3可视化工具150

5.3.1Tensorboard151

5.3.2visdom153

5.4使用GPU加速:cuda159

5.5持久化162

6PyTorch实战指南165

6.1编程实战:猫和狗二分类165

6.1.1比赛介绍166

6.1.2文件组织架构166

6.1.3关于__init__.py168

6.1.4数据加载168

6.1.5模型定义171

6.1.6工具函数172

6.1.7配置文件175

6.1.8main.py177

6.1.9使用185

6.1.10争议186

6.2PyTorchDebug指南188

6.2.1ipdb介绍188

6.2.2在PyTorch中Debug192

7AI插画师:生成对抗网络198

7.1GAN的原理简介199

7.2用GAN生成动漫头像203

7.3实验结果分析212

8AI艺术家:神经网络风格迁移216

8.1风格迁移原理介绍217

8.2用PyTorch实现风格迁移223

8.3实验结果分析234

9AI诗人:用RNN写诗238

9.1自然语言处理的基础知识238

9.1.1词向量239

9.1.2RNN241

9.2CharRNN244

9.3用PyTorch实现CharRNN247

9.4实验结果分析258

10ImageCaption:让神经网络看图讲故事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.1PyTorch的局限与发展283

11.2使用建议287

前言/序言

为什么写这《深度学习框架PyTorch:入门与实践

2016年是属于TensorFlow的一年,凭借谷歌的大力推广,TensorFlow占据了各大媒体的头条。2017年年初,PyTorch的横空出世吸引了研究人员极大的关注,PyTorch简洁优雅的设计、统一易用的接口、追风逐电的速度和变化无方的灵活性给人留下深刻的印象。

作为一门2017年刚刚发布的深度学习框架,研究人员所能获取的学习资料有限,中文资料更是比较少。笔者长期关注PyTorch发展,经常在论坛上帮助PyTorch新手解决问题,在平时的科研中利用PyTorch进行各个方面的研究,有着丰富的使用经验。看到国内的用户对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章为读者介绍图像描述任务,并以最新的AIChallenger比赛的数据为例,带领读者实现一个可以进行简单图像描述的小程序。

第1章和第11章是《深度学习框架PyTorch:入门与实践》的首章和末章,第1章介绍PyTorch的优势,以及和市面上其他几款框架的对比。第11章是对《深度学习框架PyTorch:入门与实践》的总结,以及对PyTorch不足之处的思考,同时对读者未来的学习提出建议。

关于代码

深度学习框架PyTorch:入门与实践》的所有代码都开源在GitHub【https://github.com/chenyuntc/pytorch-book】上,其中:

√第2~5章的代码以JupyterNotebook形式提供,读者可以在自己的计算机上交互式地修改运行它。

√第6~10章的代码以单独的程序给出,每个函数的作用与细节在代码中有大量的注释。

深度学习框架PyTorch:入门与实践》的代码,在最新版的PyTorch0.2上运行,同时支持Python2和Python3,其中:

√前5章的代码同时在Python2.7和Python3.5上验证,并得到最终结果。

√第6~10章的代码,主要在Python2.7上运行并得到最终结果,同时在Python3.5上测试未报错。

适读人群

学习《深度学习框架PyTorch:入门与实践》需要读者具备以下基础知识:

√了解Python的基础语法,掌握基础的Python使用方法。

√有一定深度学习基础,了解反向传播、卷积神经网络等基础知识,但并不要求深入了解。

√具备梯度、导数等高中数学基础知识。

以下知识不是必需的,但最好了解:

√numpy的使用。

√深度学习的基本流程或者其他深度学习框架的使用。

深度学习框架PyTorch:入门与实践》不适合哪些读者:

√没有任何深度学习基础的用户。

√没有Python基础的用户。

√只能使用Windows的用户。

深度学习框架PyTorch:入门与实践》约定

在《深度学习框架PyTorch:入门与实践》中,笔者是《深度学习框架PyTorch:入门与实践》编著者的自称,作者指的是软件、论文等的作者,读者指阅读《深度学习框架PyTorch:入门与实践》的你。

深度学习框架PyTorch:入门与实践》前5章的代码由JupyterNotebook转换而来,其中:

√In后面跟着的是输入的代码。

√Out是指程序的运行结果,运行结果取决于In的最后一行。

√Print后面跟着程序的打印输出内容,只有在In程序中调用了print函数/语句才会有Print输出。

√Jupyter会自动输出Image对象和matplotlib可视化结果,所以书中以“程序输出”命名的图片都来自Jupyter的程序输出。这些图片的说明在代码注释中。

如何使用《深度学习框架PyTorch:入门与实践

深度学习框架PyTorch:入门与实践》第2章是PyTorch快速入门,第3~5章是对这些内容的详细深入介绍。第6章是一个简单而完整的深度学习案例。

如果你是经验丰富的研究人员,之前对PyTorch十分熟悉,对《深度学习框架PyTorch:入门与实践》的某些例子比较感兴趣,那么你可以跳过前5章,直接阅读第6章,了解这些例子的程序设计与文件组织安排,然后阅读相应的例子。

如果你是初学者,想以最快的速度掌握PyTorch并将PyTorch应用到实际项目中,那么你可以花费2~3小时阅读2.2节的相关内容。如果你需要深入了解某部分的内容,那么可以阅读相应章节。

如果你是初学者,想完整全面地掌握PyTorch,那么建议你:

√先阅读第1~5章,了解PyTorch的各个基础知识。

√再阅读第6章,了解PyTorch实践中的技巧。

√最后从第7~10章挑选出感兴趣的例子,动手实践。

最后,希望读者在阅读《深度学习框架PyTorch:入门与实践》的时候,尽量结合《深度学习框架PyTorch:入门与实践》的配套代码阅读、修改、运行之。

致谢

杜玉姣同学在我编写《深度学习框架PyTorch:入门与实践》的时候,给了我许多建议,并协助审阅了部分章节,在此特向她表示谢意。在编写《深度学习框架PyTorch:入门与实践》时,《深度学习框架PyTorch:入门与实践》编辑郑柳洁女士给予了很大的帮助,在此特向她致谢。感谢我的家人一直以来对我的支持,感谢我的导师肖波副教授对我的指导。感谢我的同学、师弟师妹们,他们在使用PyTorch中遇到了很多问题,给了我许多反馈意见。

由于笔者水平所限,书中难免有错误和不当之处,欢迎读者批评指正。具体意见可以发表在GitHub上的issue(https://github.com/chenyuntc/pytorch-book/issues)中。


其他推荐