前言
深度学习是机器学习中最激动人心的领域,深度学习算法工程师、图像视觉工程师和自然语言处理工程师逐渐成为报酬高的新兴职业,各行各业的公司都在寻求具备深度学习理论知识和TensorFlow编程技能的人才。只有具备深度学习相关理论和实践技能,才更有可能在上述新兴职业中获得成功,但是学习和掌握神经网络、卷积神经网络、循环神经网络等深度学习理论具有一定的难度,同时掌握TensorFlow等常用深度学习工具更显得困难重重,因此一本容易上手的深度学习入门书籍肯定会对初学者有很大帮助。本书就是专门为初学者精心编写的。
初学者学习深度学习理论与TensorFlow编程技术一般都会面临两大障碍。第一大障碍是深度学习理论基础。深度学习包含很多需要掌握的基本概念,如神经元、全连接、Dropout、Normalizing、权重初始化、优化算法、卷积神经网络、卷积层、池化层、残差网络、Inception网络、迁移学习、循环神经网络、LSTM、GRU、双向循环神经网络、词嵌入、Word2Vec、GloVe、注意力机制等,学习和理解这些概念需要花费大量的时间和精力,学习周期漫长。第二大障碍是编程实践。TensorFlow是一个非常庞大的开源平台,拥有一个包含各种工具、库和社区资源的全面、灵活的生态系统。即便使用最为流行的Python接口,也有多种API可选,如低级TensorFlow API、Estimators和Keras,这三种API使得学习TensorFlow编程更为困难,学习曲线陡且应用中会不断遇到新问题。
本书就是为了让初学者顺利入门而设计的。首先,本书讲述深度学习的基本原理。了解基本的深度学习算法之后,通过实践来解决经典的问题,逐步过渡到解决实际问题。其次,本书精心设计了一些调用不同的TensorFlow API来构建深度网络的实例,读者能亲身体会如何将深度学习理论应用到实际中,加深对深度学习算法的理解,提高编程能力,逐步掌握深度学习的原理和编程技能,拉近理论与实践的距离。最后,本书专门设有读者QQ群,群号为278724996,欢迎读者加群,下载书中源代码,与作者直接对话,探讨书中技术问题。
本书共分为10章。第1章介绍深度学习和TensorFlow的基本概念、TensorFlow的安装和常用数据集;第2章介绍TensorFlow文件操作,主要内容包括CSV文件操作、编写网络下载程序、TFRecords文件操作和数据集API;第3章介绍BP神经网络原理与实现,主要内容包括BP神经网络介绍、神经网络原理、BP神经网络的Python实现、BP神经网络的TensorFlow实现;第4章介绍TensorFlow基础编程,主要内容包括TensorFlow的编程环境、TensorFlow计算图、核心概念、通过实例学习TensorFlow、一个简单的文本分类示例和TensorBoard可视化工具;第5章介绍神经网络训练与优化,主要内容包括神经网络迭代概念、正则化方法、优化算法;第6章介绍卷积神经网络原理,主要内容包括CNN的基本概念、Keras实现LeNet-5网络、Estimator实现CIFAR-10图像识别;第7章为卷积神经网络示例,主要内容包括CNN案例介绍、使用预训练的CNN算法以及CNN可视化;第8章介绍词嵌入模型,主要内容包括词嵌入模型介绍、词嵌入学习、Word2Vec算法实现;第9章介绍循环神经网络原理,主要内容包括RNN介绍、基本的RNN模型、LSTM、GRU以及对应的API介绍;第10章为循环神经网络示例,主要内容包括情感分析、文本序列数据生成。
感谢昆明理工大学提供的研究和写作环境。感谢清华大学出版社的编辑老师在出版方面提出的建设性意见和给予的无私帮助;特别感谢出版社的魏莹老师,没有她的大力支持、帮助和鼓励,这本书不一定能够面世。感谢读者群的一些未见面的群友,他们对作者以前的著作提出宝贵的建议并鼓励作者撰写更多更好的技术书籍,虽然我无法一一列举姓名,但他们的帮助我会一直铭记在心。感谢购买本书的朋友,欢迎批评指正,你们的批评建议都会受到重视,并在将来再版中改进。
作者在写作中付出很多精力和劳动,但限于作者的学识、能力和精力,书中难免存在一些缺陷,甚至错误,敬请各位读者批评指正。
袁梅宇
于昆明理工大学