前 言

机器学习在20世纪80年代就在算法、理论和应用等方面取得了很大的成功,而深度学习,作为机器学习的一种方法,却在2006年才开始进入相关研究人员的视野。2006年,Hiton提出了用“无监督训练对权值进行初始化+有监督训练微调”来解决深层网络训练中的梯度消失问题,因此2006年被定为深度学习元年。由于Hiton提出的解决方案没有经过特别有效的实验验证,因此没有引起相关学者的重视。直到2012年,Alex等人在ImageNet图像识别比赛中搭建了一个深度卷积神经网络AlexNet并获得比赛冠军,比第二名的准确率还要高至少10%,才使得卷积神经网络乃至深度学习重新引起了广泛的关注。至此之后,深度学习被应用到各种实际项目中。

PaddlePaddle是百度公司在2016年开源的一个深度学习框架。PaddlePaddle发展至今,其可以轻松部署到服务器、移动手机和嵌入式设备中。为了方便开发者的使用,PaddlePaddle还开源了大量常用的深度学习模型。虽然PaddlePaddle已经很完善了,但是PaddlePaddle的相关书籍还比较少。因此,我们想出版一本书帮助更多的开发者学习PaddlePaddle。经过很长时间的研究和实验,我们最终完成了PaddlePaddle Fluid版本的图书的编写。

本书共有15章,难度由浅入深,一步步带领读者从PaddlePaddle的安装,到PaddlePaddle的简单使用,再到深度学习模型的部署,逐渐掌握PaddlePaddle及其应用方法。本书适合零基础但又希望能够快速入门深度学习的读者,或者是想从其他深度学习框架迁移到PaddlePaddle的读者。本书在介绍PaddlePaddle的使用过程中,也会穿插一些深度学习的知识点,帮助读者了解更多的深度学习知识。我们在GitHub平台开源了本书的全部代码,本书的代码支持PaddlePaddle 2.0版本。

第1章介绍PaddlePaddle的安装,本书主要介绍PaddlePaddle在Windows操作系统下的安装教程,也提供了在Ubuntu操作系统下的安装教程和在AI Studio平台的使用方式,特别是AI Studio平台能够满足没有GPU的读者使用。

第2章介绍PaddlePaddle的使用方式,本章能够让读者快速熟悉PaddlePaddle的使用方式。

第3章介绍PaddlePaddle的各种神经网络模型的构建、训练以及预测。本章介绍深度学习中最简单的实例—线性回归算法,通过线性回归算法这个例子,读者可以快速掌握PaddlePaddle深度学习模型的搭建、数据的读取,以及训练模型,最后还可以使用训练模型预测得到结果。

第4章介绍卷积神经网络的使用,通过一个图像识别案例——MNIST手写数字识别帮助读者认识卷积神经网络。通过这个例子读者可以了解如何使用PaddlePaddle搭建一个卷积神经网络,并使用训练好的模型预测一张图片。

第5章介绍循环神经网络的使用,利用循环神经网络实现一个情感分析的文本分类,帮助读者熟悉循环神经网络的搭建。

第6章介绍生成对抗网络的搭建和训练,使用生成对抗网络训练MNIST手写数据集,最后生成数字图像。

第7章介绍强化学习,通过强化学习模型学习如何玩一个小游戏,最终强化学习模型可以把这个游戏玩到最高分。

第8章介绍PaddlePaddle模型的保存与使用,让读者掌握如何使用PaddlePaddle保存已经训练好的模型,并使用这个模型预测其他未训练的数据。

第9章介绍迁移学习,在保存模型的基础上,介绍如何使用之前已经训练好的模型在其他数据中做模型迁移,减少模型训练时间,提高准确率。

第10章介绍Visual DL训练可视化,Visual DL是PaddlePaddle提供的一种可视化工具,能够帮助读者将训练情况可视化,方便读者根据训练情况调整参数。

第11章和第12章分别介绍了自定义图像数据集的训练和自定义文本数据集的训练,通过这两章的学习,读者可以学到如何自定义数据训练模型,可以更好地训练自己项目中实际的数据集。

第13章介绍动态图的使用,动态图的代码编写方式更像平常的编写方式,这是PaddlePaddle新推出的一种机制,动态图机制的出现使得模型编写更加易于理解。

第14章和第15章分别介绍了模型在服务器上的部署和在移动端上的部署,这也是我们训练模型最终的目的。模型部署使得我们的项目拥有了深度学习的能力,真正成为一个人工智能的项目。

广州新华学院潘志宏副教授担任本书主编,并负责全书内容的组织和编审,以及部分章节的编写,王培彬(网名为夜雨飘零)负责大部分章节的编写。本书的编写得到以下基金项目的支持:教育部产学合作协同育人项目(201802153146、201702071078),广东省普通高校重大平台与重大科研项目-青年创新人才项目(自然科学)(2016KQNCX222)。另外,本书在编写的过程中得到了各个技术社区开发者的帮助,在此笔者对这些热心的开发者表示衷心感谢。

由于笔者的水平和认知有限,书中难免会有不妥之处,恳请各位读者批评指正。

潘志宏 王培彬

2021年3月