前言
近年来,以深度学习为代表的人工智能技术正引领着计算机领域和工业领域的一场革命。如今,我们日常生活中的很多场景都和人工智能领域息息相关。比如,日常生活中经常使用的刷脸支付、智能语音助手,以及正在逐渐投入使用的自动驾驶系统,在这些日常应用中,人工智能都扮演着一个重要的角色。而人工智能在这些领域的应用逐渐将人们从简单枯燥的重复劳动中解放出来,让人们能够投入到更有创造力的活动中去。可以预见,在未来,人工智能将会朝着更加智能,而且能够在越来越多的场景中替代人类的方向发展,代替人类去完成一些枯燥乏味的劳动。
目前人工智能的实现依赖的是使用深度学习模型在海量的数据上进行训练。由于深度学习模型是高度模块化的,因此,可以通过组合不同的模块来构造不同的深度学习模型以完成相应的任务。为了利用深度学习模型的这个特点,更加快速地进行深度学习模型的构建和开发,人们开发了一系列深度学习框架,比较有名的深度学习框架包括PyTorch、TensorFlow、Caffe等。这些框架的特点是内置了一系列基础模块,并且能够使用一定的方式(比如Python语言或者其他配置文件)来控制基础模块的组合,构造复杂多样的深度学习模型。作为其中一个成熟的深度学习框架,PyTorch在学术界和工业界得到了广泛的应用。特别是在学术界,由于PyTorch简单高效,越来越多的研究课题组正在选择PyTorch作为深度学习的研究工具。在工业领域,PyTorch也逐渐加入了一系列新功能,方便深度学习模型的部署。作为一款优秀的深度学习框架,PyTorch主要的特点包括能够无缝地和Python语言整合,方便深度学习模型的构建和调试,以及使用动态计算图模型,灵活地实现各种需要的功能等。可以说,PyTorch的设计思想完美地契合了Python语言的设计思想,即简洁和高效。这也让PyTorch对初学者非常友好,容易入门和掌握。可以说,PyTorch是易于上手,同时保留了灵活性,能够构造绝大多数深度学习模型的一款强大的深度学习框架。
为了介绍这样一个功能强大的深度学习框架,本书从机器学习和深度学习的基础概念入手,首先让读者对深度学习的基础操作和主要任务有一定了解,在这个基础上,结合PyTorch中函数和类的定义介绍PyTorch是如何实现深度学习的这些基础操作的。接下来介绍了如何使用PyTorch中的这些基础操作来进行组合,构造复杂的深度学习模型。本书着重介绍了这些复杂的深度学习模型在两个重要领域(包括计算机视觉和自然语言处理)的应用,可以说,深度学习到目前为止在这两个领域都取得了巨大的成功。当然,深度学习的应用不止这两个领域。本书还介绍了深度学习在其他领域,如推荐系统、语音识别和语音合成,以及强化学习中的应用。同时,为了加深读者对PyTorch深度学习框架的理解,本书在介绍深度学习模型的同时,还着重介绍了PyTorch的源代码系统。为了让读者了解PyTorch的运行机制,本书还介绍了PyTorch的C++后端是如何工作的,以及这个后端如何和前端的Python结合起来构造一个灵活的深度学习框架系统。从源代码阅读的角度来说,本书可以作为源代码的一个简单注释,帮助读者理解PyTorch各个构成部分的主要作用,以及这些构成部分是如何组合在一起协同工作的。
作为一个逐渐成熟的深度学习框架,PyTorch经历了一系列的蜕变。从最初的0.1版本到目前最新的1.3版本,PyTorch加入了一系列模块和新功能,大大增强了深度学习框架的灵活性并推展了其应用场景,同时也对代码进行了大量的修正,解决了很多代码中的错误。可以说,PyTorch是一个飞速发展的深度学习框架。迄今为止,PyTorch已经能够覆盖从学术研究到工业部署的一系列场景,在框架的功能和性能方面有了飞跃般的提升。相信在未来,随着基于深度学习模型的人工智能应用的逐渐推广,PyTorch作为一个流行的深度学习框架将会得到更广泛的应用。
如无特殊说明,本书在公式中用斜体代表变量,黑斜体代表张量,正体代表常量。卷积神经网络的卷积核和中间特征的单位统一为像素。
因作者水平有限,书中错漏之处在所难免,恳请读者批评、指正。
作者