前言
技术领导者正在采用神经网络来增强他们的产品,使之更加智能,或者用一句市场营销的话来说,就是用人工智能赋能。本书是一本关于TensorFlow的动手实践指南,内容涉及其内部结构、2.0版的新特性以及如何使用它们来创建基于神经网络的应用程序。学完本书,你将精通TensorFlow的架构及其新特性。借助神经网络,你将能够轻松地解决机器学习方面的问题。
这本书首先对机器学习和神经网络的理论进行概述,然后介绍TensorFlow库,包括1.x和2.0版本。通过阅读本书并借助易于学习的示例,你将精通神经网络的工作原理。接下来,你将学习如何掌握优化技术和算法,以便使用TensorFlow 2.0提供的新模块构建各种神经网络架构。此外,在分析了TensorFlow结构之后,你将在研究工作和项目中学习如何实现更复杂的神经网络架构,例如用于分类的CNN、语义分割网络、生成式对抗网络等。
在本书的最后,你将掌握TensorFlow结构,并能够毫不费力地利用该机器学习框架来训练和使用不同复杂度的神经网络。
本书读者
本书面向希望了解TensorFlow结构和新特性的数据科学家、机器学习的开发人员、深度学习的研究人员和具有统计知识的开发者。要充分利用这本书,需要你掌握Python编程语言方面的知识。
本书主要内容
第1章涵盖机器学习的基本原理:什么是有监督学习、无监督学习和半监督学习,以及为什么这些区别非常重要。此外,你将开始了解如何创建数据流水线,如何度量算法的性能,以及如何验证结果。
第2章专注于神经网络。你将了解机器学习模型的优点,如何进行网络学习,以及如何在实践中执行模型参数更新。在该章结束时,你将了解到反向传播和网络参数更新背后的直觉。此外,你将了解为什么需要深层神经网络架构来解决具有挑战性的任务。
第3章涵盖TensorFlow的结构——该结构在1.x和2.x版本之间共享。
第4章演示TensorFlow 1.x和TensorFlow 2.x之间的区别。你将开始使用这两个版本开发一些简单的机器学习模型,还将了解这两个版本所有的共同特性。
第5章演示如何使用tf.data API定义完整的数据输入流水线,以及如何使用tf.estimator API定义实验。在该章结束时,你将能够使用tf.data和tf.io.gfile API的所有功能,创建复杂高效的输入流水线。
第6章介绍如何利用TensorFlow Hub与Keras API的紧密集成,轻松进行迁移学习和微调。
第7章演示如何扩展分类器,使其成为一个目标检测器以回归分析边界框的坐标,还介绍了更复杂的目标检测架构。
第8章介绍如何实现语义分割网络,如何为此类任务准备数据集,以及如何训练和测试模型的性能。你将使用U-Net解决语义分割问题。
第9章从理论和实践的角度来介绍GAN。你将了解生成模型的结构,以及如何使用TensorFlow 2.0轻松实现对抗性训练。
第10章演示如何将训练过的模型转换为完整的应用程序。该章还介绍如何将训练好的模型以指定的表示方式导出(保存模型)并在完整的应用程序中使用它。在该章结束时,你能够导出一个训练好的模型,并在Python、TensorFlow.js以及Go中通过tfgo库来使用它。
充分利用本书
你需要对神经网络有一些基本的了解,但这并不是必需的,因为本书将从理论和实践的角度来讨论这些主题,有基本的机器学习算法工作经验更佳。你需要对Python 3有很好的了解。
你应该已经知道如何使用pip安装软件包,如何设置工作环境来使用TensorFlow,以及如何启用(如果可用)GPU加速。此外,还需要有良好的编程概念方面的背景知识,如命令式语言与描述性语言以及面向对象编程。
在学完前两章机器学习和神经网络理论的内容之后,第3章将介绍环境设置。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
该书的代码包也托管在GitHub上,网址为https://github.com/PacktPublishing/Hands-on-Neural-Networks-with-TensorFlow-2.0。如果对代码有更新,将在现有的GitHub存储库上进行更新。
此外,在https://github.com/PacktPublishing/上有丰富的图书和视频目录,以及其他的代码包。
排版约定
代码片段如下:
命令行输入和输出如下所示:
黑体:表示新术语、重要的词或者屏幕上看到的词句。例如,菜单或对话框中出现的词。举例说明:“tf.Graph图结构的第二个特点是它的图集合。”
警告或重要说明的图标。
提示和技巧的图标。