科技>计算机>网络与互联网
深度学习之TensorFlow工程化项目实战

深度学习之TensorFlow工程化项目实战"

作者:李金洪
ISBN:9787121363924
定价:¥159.0
字数:1305千字
页数:768
出版时间:2019-05
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书针对TensorFlow 1.0以上版本编写,采用"实例”的形式编写,通过60个实例全面而深入地讲解"深度学习神经网络原理”和"Tensorflow使用方法”两方面。书中的实例具有很强的实用,如对图片分类、制作一个简单的聊天机器人、进行图像识别等。本书还免费提供了所有案例的源代码及数据样本,这些代码和样本不仅方便了读者学习,而且也能为以后的工作提供便利。全书共分为4篇: 第 1 篇 准备; 第2篇 入门 ; 第 3 篇 基础——常用的神经网络结构; 第 4 篇 进阶--——掌握深度学习模型;第 5 篇 高级--——深度学习模型实战。

前言

TensorFlow是目前使用最广泛的机器学习框架,满足了广大用户的需求。如今TensorFlow已经更新到2.0版本,具有更强的易用性。 本书通过大量的实例讲解在TensorFlow框架上实现人工智能的技术,兼容TensorFlow 1.0与TensorFlow 2.0版本,覆盖多种开发场景。 书中的内容主要源于作者在代码医生工作室的工作积累。作者将自己在真实项目中使用TensorFlow的经验与技巧全部写进书里,让读者可以接触到最真实的案例,最实战的场景,尽快搭上人工智能的“列车”。 作者将自身的项目实战经验浓缩到三本书里,形成了“深度学习三部曲”。三本书形成一套完善的知识体系,构成了完备的技术栈闭环。 本书是“深度学习三部曲”的最后一本。 -《Python带我起飞:入门、进阶、商业实战》,主要讲解了Python基础语法。与深度学习关系不大,但包含了开发神经网络模型所必备的基础知识。 -《深度学习之TensorFlow:入门、原理与进阶实战》,主要讲解了深度学习的基础网络模型及TensorFlow框架的基础编程方法。 -《深度学习之TensorFlow工程化项目实战》,主要讲解在实战项目中用到的真实模型,以及将TensorFlow框架用于各种生产环境应用场景的编程方法。 这三本书可以将一个零基础的读者顺利带入深度学习行业,并让其能够成为一名合格的深度学习工程师。 ---------------------------------- 本书特色 1. 兼容TensorFlow 1.x与TensorFlow 2.0版本,提供了大量的编程经验 本书兼顾TensorFlow 1.x与TensorFlow 2.0两个版本,给出了如何将TensorFlow 1.x代码升级为TensorFlow 2.0可用的代码。 2. 覆盖了TensorFlow的大量接口 TensorFlow是一个非常庞大的框架,内部有很多接口可以满足不同用户的需求。合理使用现有接口可以在开发过程中起到事半功倍的效果。然而,由于TensorFlow的代码迭代速度太快,有些接口的配套文档并不是很全。作者花了大量的时间与精力,对一些实用接口的使用方法进行摸索与整理,并将这些方法写到书中。 3. 提供了高度可重用代码,公开了大量的商用代码片段 本书实例中的代码大多都来自代码医生工作室的商业项目,这些代码的易用性、稳定性、可重用性都很强。读者可以将这些代码提取出来直接用在自己的项目中,加快开发进度。 4. 书中的实战案例可应用于真实场景 本书中大部分实例都是当前应用非常广泛的通用任务,包括图片分类、目标识别、像素分割、文本分类、语音合成等多个方向。读者可以在书中介绍的模型的基础上,利用自己的业务数据集快速实现AI功能。 5. 从工程角度出发,覆盖工程开发全场景 本书以工程实现为目标,全面覆盖开发工程化AI项目中所涉及的知识,并全部配有实例,包括开发数据集、训练模型、特征工程、开发模型、保护模型文件、模型防御、服务端和终端的模型部署。其中,特征工程部分全面讲解了TensorFlow中的特征列接口。该接口可以使数据在特征处理阶段就以图的方式进行加工,从而保证了在训练场景下和使用场景下模型的输入统一。 6. 提供了大量前沿论文链接地址,便于读者进一步深入学习 本书使用的AI模型,大多来源于前沿的技术论文,并在原有论文基础上做了一些结构改进。这些实例具有很高的科研价值。读者可以根据书中提供的论文链接地址,进一步深入学习更多的前沿知识,再配合本书的实例进行充分理解,达到融会贯通。本书也可以帮助AI研究者进行学术研究。 7. 注重方法与经验的传递 本书在讲解知识时,更注重传授方法与经验。全书共有几十个“提示”标签,其中的内容都是含金量很高的成功经验分享与易错事项总结,有关于经验技巧的,也有关于风险规避的,可以帮助读者在学习的路途上披荆斩棘,快速进步。 ---------------------------------- 本书读者对象 -人工智能爱好者 -人工智能开发工程师 -人工智能专业的高校学生 ? -使用TensorFlow框架的工程师 -人工智能专业的教师 ? -集成人工智能的开发人员 -人工智能初学者

目录

=====第1篇 准备 第1章 学习准备/2 ∣1.1 TensorFlow能做什么/2 ∣1.2 学习TensorFlow的必备知识/3 ∣1.3 学习技巧:跟读代码/4 ∣1.4 如何学习本书/4 - 第2章 搭建开发环境/5 2.1 准备硬件环境/5 2.2 下载及安装Anaconda/6 2.3 安装TensorFlow/9 2.4 GPU版本的安装方法/10 ∣2.4.1 在Windows中安装CUDA/10 ∣2.4.2 在Linux中安装CUDA/13 ∣2.4.3 在Windows中安装cuDNN/13 ∣2.4.4 在Linux中安装cuDNN/14 ∣2.4.5 常见错误及解决方案/16 2.5 测试显卡的常用命令/16 2.6 TensorFlow 1.x版本与2.x版本共存的解决方案/18 - 第3章 实例1:用AI模型识别图像是桌子、猫、狗,还是其他/21 3.1 准备代码环境并预训练模型/21 3.2 代码实现:初始化环境变量,并载入ImgNet标签/24 3.3 代码实现:定义网络结构/25 3.4 代码实现:载入模型进行识别/26 3.5 扩展:用更多预训练模型完成图片分类任务/28 ∣ ===== 第2篇 基础 ∣ 第4章 用TensorFlow制作自己的数据集/30 4.1 快速导读/30 ∣4.1.1 什么是数据集/30 ∣4.1.2 TensorFlow的框架/31 ∣4.1.3 什么是TFDS/31 4.2 实例2:将模拟数据制作成内存对象数据集/32 ∣4.2.1 代码实现:生成模拟数据/32 ∣4.2.2 代码实现:定义占位符/33 ∣4.2.3 代码实现:建立会话,并获取显数据/34 ∣4.2.4 代码实现:模拟数据可视化/34 ∣4.2.5 运行程序/34 ∣4.2.6 代码实现:创建带有迭代值并支持乱序功能的模拟数据集/35 4.3 实例3:将图片制作成内存对象数据集/37 ∣4.3.1 样本介绍/38 ∣4.3.2 代码实现:载入文件名称与标签/39 ∣4.3.3 代码实现:生成队列中的批次样本数据/40 ∣4.3.4 代码实现:在会话中使用数据集/41 ∣4.3.5 运行程序/42 4.4 实例4:将Excel文件制作成内存对象数据集/42 ∣4.4.1 样本介绍/43 ∣4.4.2 代码实现:逐行读取数据并分离标签/43 ∣4.4.3 代码实现:生成队列中的批次样本数据/44 ∣4.4.4 代码实现:在会话中使用数据集/45 ∣4.4.5 运行程序/46 4.5 实例5:将图片文件制作成TFRecord数据集/46 ∣4.5.1 样本介绍/47 ∣4.5.2 代码实现:读取样本文件的目录及标签/47 ∣4.5.3 代码实现:定义函数生成TFRecord数据集/48 ∣4.5.4 代码实现:读取TFRecord数据集,并将其转化为队列/49 ∣4.5.5 代码实现:建立会话,将数据保存到文件/50 ∣4.5.6 运行程序/51 4.6 实例6:将内存对象制作成Dataset数据集/52 ∣4.6.1 如何生成Dataset数据集/52 ∣4.6.2 如何使用Dataset接口/53 ∣4.6.3 tf.data.Dataset接口所支持的数据集变换操作/54 ∣4.6.4 代码实现:以元组和字典的方式生成Dataset对象/58 ∣4.6.5 代码实现:对Dataset对象中的样本进行变换操作/59 ∣4.6.6 代码实现:创建Dataset迭代器/60 ∣4.6.7 代码实现:在会话中取出数据/60 ∣4.6.8 运行程序/61 ∣4.6.9 使用tf.data.Dataset.from_tensor_slices接口的注意事项/62 4.7 实例7:将图片文件制作成Dataset数据集/63 ∣4.7.1 代码实现:读取样本文件的目录及标签/64 ∣4.7.2 代码实现:定义函数,实现图片转换操作/64 ∣4.7.3 代码实现:用自定义函数实现图片归一化/65 ∣4.7.4 代码实现:用第三方函数将图片旋转30°/65 ∣4.7.5 代码实现:定义函数,生成Dataset对象/66 ∣4.7.6 代码实现:建立会话,输出数据/67 ∣4.7.7 运行程序/68 4.8 实例8:将TFRecord文件制作成Dataset数据集/69 ∣4.8.1 样本介绍/69 ∣4.8.2 代码实现:定义函数,生成Dataset对象/70 ∣4.8.3 代码实现:建立会话输出数据/71 ∣4.8.4 运行程序/72 4.9 实例9:在动态图中读取Dataset数据集/72 ∣4.9.1 代码实现:添加动态图调用/72 ∣4.9.2 制作数据集/73 ∣4.9.3 代码实现:在动态图中显示数据/73 ∣4.9.4 扩展示例10:在TensorFlow 2.x中操作数据集/74 4.10 实例11:在不同场景中使用数据集/77 ∣4.10.1 代码实现:在训练场景中使用数据集/78 ∣4.10.2 代码实现:在应用模型场景中使用数据集/79 ∣4.10.3 代码实现:在训练与测试混合场景中使用数据集/80 4.11 tf.data.Dataset接口的更多应用/81 - 第5章 10分钟快速训练自己的图片分类模型/82 5.1 快速导读/82 ∣5.1.1 认识模型和模型检查点文件/82 ∣5.1.2 了解“预训练模型”与微调(Fine-Tune)/82 ∣5.1.3 学习TensorFlow中的预训练模型库——TF-Hub库/83 5.2 实例12:通过微调模型分辨男女/83 ∣5.2.1 准备工作/84 ∣5.2.2 代码实现:处理样本数据并生成Dataset对象/85 ∣5.2.3 代码实现:定义微调模型的类MyNASNetModel/88 ∣5.2.4 代码实现:构建MyNASNetModel类中的基本模型/88 ∣5.2.5 代码实现:实现MyNASNetModel类中的微调操作/89 ∣5.2.6 代码实现:实现与训练相关的其他方法/90 ∣5.2.7 代码实现:构建模型,用于训练、测试、使用/92 ∣5.2.8 代码实现:通过二次迭代来训练微调模型/94 ∣5.2.9 代码实现:测试模型/96 5.3 扩展:通过摄像头实时分辨男女/100 5.4 TF-slim接口中的更多成熟模型/100 ∣5.5 实例13:用TF-Hub库微调模型以评估人物的年龄/100 ∣5.5.1 准备样本/101 ∣5.5.2 下载TF-Hub库中的模型/102 ∣5.5.3 代码实现:测试TF-Hub库中的MobileNet_V2模型/104 ∣5.5.4 用TF-Hub库微调MobileNet_V2模型/107 ∣5.5.5 代码实现:用模型评估人物的年龄/109 ∣5.5.6 扩展:用TF-Hub库中的其他模型实现不同领域的分类任务/113 ∣5.6 总结/113 ∣5.7 练习题/114 ∣5.7.1 基于TF-slim接口的练习/115 ∣5.7.2 基于TF-Hub库的练习/115 - 第6章 用TensorFlow编写训练模型的程序/117 6.1 快速导读/117 ∣6.1.1 训练模型是怎么一回事/117 ∣6.1.2 用“静态图”方式训练模型/117 ∣6.1.3 用“动态图”方式训练模型/118 ∣6.1.4 什么是估算器框架接口(Estimators API)/119 ∣6.1.5 什么是tf.layers接口/120 ∣6.1.6 什么是tf.keras接口/121 ∣6.1.7 什么是tf.js接口/122 ∣6.1.8 什么是TFLearn框架/123 ∣6.1.9 该选择哪种框架/123 ∣6.1.10 分配运算资源与使用分布策略/124 ∣6.1.11 用tfdbg调试TensorFlow模型/127 ∣6.1.12 用钩子函数(Training_Hooks)跟踪训练状态/127 ∣6.1.13 用分布式运行方式训练模型/128 ∣6.1.14 用T2T框架系统更方便地训练模型/128 ∣6.1.15 将TensorFlow 1.x中的代码移植到2.x版本/129 ∣6.1.16 TensorFlow 2.x中的新特性——自动图/130 6.2 实例14:用静态图训练一个具有保存检查点功能的回归模型/131 ∣6.2.1 准备开发步骤/131 ∣6.2.2 生成检查点文件/131 ∣6.2.3 载入检查点文件/132 ∣6.2.4 代码实现:在线性回归模型中加入保存检查点功能/132 ∣6.2.5 修改迭代次数,二次训练/135 6.3 实例15:用动态图(eager)训练一个具有保存检查点功能的回归模型/136 ∣6.3.1 代码实现:启动动态图,生成模拟数据/136 ∣6.3.2 代码实现:定义动态图的网络结构/137 ∣6.3.3 代码实现:在动态图中加入保存检查点功能/138 ∣6.3.4 代码实现:按指定迭代次数进行训练,并可视化结果/139 ∣6.3.5 运行程序,显示结果/140 ∣6.3.6 代码实现:用另一种方法计算动态图梯度/141 ∣6.3.7 扩展实例16:在动态图中获取参数变量/142 ∣6.3.8 小心动态图中的参数陷阱/144 ∣6.3.9 扩展实例17:在静态图中使用动态图/145 6.4 实例18:用估算器框架训练一个回归模型/147 ∣6.4.1 代码实现:生成样本数据集/147 ∣6.4.2 代码实现:设置日志级别/148 ∣6.4.3 代码实现:实现估算器的输入函数/148 ∣6.4.4 代码实现:定义估算器的模型函数/149 ∣6.4.5 代码实现:通过创建config文件指定硬件的运算资源/151 ∣6.4.6 代码实现:定义估算器/152 ∣6.4.7 用tf.estimator.RunConfig控制更多的训练细节/153 ∣6.4.8 代码实现:用估算器训练模型/153 ∣6.4.9 代码实现:通过热启动实现模型微调/155 ∣6.4.10 代码实现:测试估算器模型/158 ∣6.4.11 代码实现:使用估算器模型/158 ∣6.4.12 扩展实例19:为估算器添加日志钩子函数/159 6.5 实例20:将估算器代码改写成静态图代码/161 ∣6.5.1 代码实现:复制网络结构/161 ∣6.5.2 代码实现:重用输入函数/163 ∣6.5.3 代码实现:创建会话恢复模型/163 ∣6.5.4 代码实现:继续训练/163 6.6 实例21:用tf.layers API在动态图上识别手写数字/165 ∣6.6.1 代码实现:启动动态图并加载手写图片数据集/165 ∣6.6.2 代码实现:定义模型的类/166 ∣6.6.3 代码实现:定义网络的反向传播/167 ∣6.6.4 代码实现:训练模型/167 6.7 实例22:用tf.keras API训练一个回归模型/168 ∣6.7.1 代码实现:用model类搭建模型/168 ∣6.7.2 代码实现:用sequential类搭建模型/169 ∣6.7.3 代码实现:搭建反向传播的模型/171 ∣6.7.4 代码实现:用两种方法训练模型/172 ∣6.7.5 代码实现:获取模型参数/172 ∣6.7.6 代码实现:测试模型与用模型进行预测/173 ∣6.7.7 代码实现:保存模型与加载模型/173 ∣6.7.8 代码实现:将模型导出成JSON文件,再将JSON文件导入模型/175 ∣6.7.9 扩展实例23:在tf.keras接口中使用预训练模型ResNet/176 ∣6.7.10 扩展:在动态图中使用tf.keras接口/178 ∣6.7.11 扩展实例24:在静态图中使用tf.keras接口/178 6.8 实例25:用tf.js接口后方训练一个回归模型/180 ∣6.8.1 代码实现:在HTTP的头标签中添加tfjs模块/180 ∣6.8.2 代码实现:用JavaScript脚本实现回归模型/181 ∣6.8.3 运行程序:在浏览器中查看效果/181 ∣6.8.4 扩展:tf.js 接口的应用场景/182 6.9 实例26:用估算器框架实现分布式部署训练/182 ∣6.9.1 运行程序:修改估算器模型,使其支持分布式/182 ∣6.9.2 通过TF_CONFIG进行分布式配置/183 ∣6.9.3 运行程序/185 ∣6.9.4 扩展:用分布策略或KubeFlow框架进行分布式部署/186 6.10 实例27:在分布式估算器框架中用tf.keras接口训练ResNet模型,识别图片中是橘子还是苹果/186 ∣6.10.1 样本准备/186 ∣6.10.2 代码实现:准备训练与测试数据集/187 ∣6.10.3 代码实现:制作模型输入函数/187 ∣6.10.4 代码实现:搭建ResNet模型/188 ∣6.10.5 代码实现:训练分类器模型/189 ∣6.10.6 运行程序:评估模型/190 ∣6.10.7 扩展:全连接网络的优化/190 6.11 实例28:在T2T框架中用tf.layers接口实现MNIST数据集分类/191 ∣6.11.1 代码实现:查看T2T框架中的数据集(problems)/191 ∣6.11.2 代码实现:构建T2T框架的工作路径及下载数据集/192 ∣6.11.3 代码实现:在T2T框架中搭建自定义卷积网络模型/193 ∣6.11.4 代码实现:用动态图方式训练自定义模型/194 ∣6.11.5 代码实现:在动态图中用metrics模块评估模型/195 6.12 实例29:在T2T框架中,用自定义数据集训练中英文翻译模型/196 ∣6.12.1 代码实现:声明自己的problems数据集/196 ∣6.12.2 代码实现:定义自己的problems数据集/197 ∣6.12.3 在命令行下生成tfrecoder格式的数据/198 ∣6.12.4 查找T2T框架中的模型及超参,并用指定的模型及超参进行训练/199 ∣6.12.5 用训练好的T2T框架模型进行预测/201 ∣6.12.6 扩展:在T2T框架中,如何选取合适的模型及超参/202 6.13 实例30:将TensorFlow 1.x中的代码升级为可用于2.x版本的代码/203 ∣6.13.1 准备工作:创建Python虚环境/203 ∣6.13.2 使用工具转换源码/204 ∣6.13.3 修改转换后的代码文件/204 ∣6.13.4 将代码升级到TensorFlow 2.x版本的经验总结/205 ∣ 第3篇 进阶 ∣ -第7章 特征工程——会说话的数据/208 7.1 快速导读/208 ∣7.1.1 特征工程的基础知识/208 ∣7.1.2 离散数据特征与连续数据特征/209 ∣7.1.3 了解特征列接口/210 ∣7.1.4 了解序列特征列接口/210 ∣7.1.5 了解弱学习器接口——梯度提升树(TFBT接口)/210 ∣7.1.6 了解特征预处理模块(tf.Transform)/211 ∣7.1.7 了解因子分解模块/212 ∣7.1.8 了解加权矩阵分解算法/212 ∣7.1.9 了解Lattice模块——点阵模型/213 ∣7.1.10 联合训练与集成学习/214 7.2 实例31:用wide_deep模型预测人口收入/214 ∣7.2.1 了解人口收入数据集/214 ∣7.2.2 代码实现:探索性数据分析/217 ∣7.2.3 认识wide_deep模型/218 ∣7.2.4 部署代码文件/219 ∣7.2.5 代码实现:初始化样本常量/220 ∣7.2.6 代码实现:生成特征列/220 ∣7.2.7 代码实现:生成估算器模型/222 ∣7.2.8 代码实现:定义输入函数/223 ∣7.2.9 代码实现:定义用于导出冻结图文件的函数/224 ∣7.2.10 代码实现:定义类,解析启动参数/225 ∣7.2.11 代码实现:训练和测试模型/226 ∣7.2.12 代码实现:使用模型/227 ∣7.2.13 运行程序/228 7.3 实例32:用弱学习器中的梯度提升树算法预测人口收入/229 ∣7.3.1 代码实现:为梯度提升树模型准备特征列/230 ∣7.3.2 代码实现:构建梯度提升树模型/230 ∣7.3.3 代码实现:训练并导出梯度提升树模型/231 ∣7.3.4 代码实现:设置启动参数,运行程序/232 ∣7.3.5 扩展:更灵活的TFBT接口/233 7.4 实例33:用feature_column模块转换特征列/233 ∣7.4.1 代码实现:用feature_column模块处理连续值特征列/234 ∣7.4.2 代码实现:将连续值特征列转化成离散值特征列/237 ∣7.4.3 代码实现:将离散文本特征列转化为one-hot与词向量/239 ∣7.4.4 代码实现:根据特征列生成交叉列/246 7.5 实例34:用sequence_feature_column接口完成自然语言处理任务的数据预处理工作/248 ∣7.5.1 代码实现:构建模拟数据/248 ∣7.5.2 代码实现:构建词嵌入初始值/249 ∣7.5.3 代码实现:构建词嵌入特征列与共享特征列/249 ∣7.5.4 代码实现:构建序列特征列的输入层/250 ∣7.5.5 代码实现:建立会话输出结果/251 7.6 实例35:用factorization模块的kmeans接口聚类COCO数据集中的标注框/253 ∣7.6.1 代码实现:设置要使用的数据集/253 ∣7.6.2 代码实现:准备带聚类的数据样本/253 ∣7.6.3 代码实现:定义聚类模型/255 ∣7.6.4 代码实现:训练模型/256 ∣7.6.5 代码实现:输出图示化结果/256 ∣7.6.6 代码实现:提取并排序聚类结果/258 ∣7.6.7 扩展:聚类与神经网络混合训练/258 7.7 实例36:用加权矩阵分解模型实现基于电影评分的推荐系统/259 ∣7.7.1 下载并加载数据集/259 ∣7.7.2 代码实现:根据用户和电影特征列生成稀疏矩阵/260 ∣7.7.3 代码实现:建立WALS模型,并对其进行训练/261 ∣7.7.4 代码实现:评估WALS模型/263 ∣7.7.5 代码实现:用WALS模型为用户推荐电影/264 ∣7.7.6 扩展:使用WALS的估算器接口/265 7.8 实例37:用Lattice模块预测人口收入/265 ∣7.8.1 代码实现:读取样本,并创建输入函数/266 ∣7.8.2 代码实现:创建特征列,并保存校准关键点/267 ∣7.8.3 代码实现:创建校准线性模型/270 ∣7.8.4 代码实现:创建校准点阵模型/270 ∣7.8.5 代码实现:创建随机微点阵模型/271 ∣7.8.6 代码实现:创建集合的微点阵模型/271 ∣7.8.7 代码实现:定义评估与训练函数/272 ∣7.8.8 代码实现:训练并评估模型/273 ∣7.8.9 扩展实例38:将点阵模型嵌入神经网络中/274 7.9 实例38:结合知识图谱实现基于电影的推荐系统/278 ∣7.9.1 准备数据集/278 ∣7.9.2 预处理数据/279 ∣7.9.3 搭建MKR模型/279 ∣7.9.4 训练模型并输出结果/286 7.10 总结:可解释性算法的意义/286 - 第8章 卷积神经网络(CNN)——在图像处理中应用最广泛的模型/287 8.1 快速导读/287 ∣8.1.1 认识卷积神经网络/287 ∣8.1.2 什么是空洞卷积/288 ∣8.1.3 什么是深度卷积/290 ∣8.1.4 什么是深度可分离卷积/290 ∣8.1.5 了解卷积网络的缺陷及补救方法/291 ∣8.1.6 了解胶囊神经网络与动态路由/292 ∣8.1.7 了解矩阵胶囊网络与EM路由算法/297 ∣8.1.8 什么是NLP任务/298 ∣8.1.9 了解多头注意力机制与内部注意力机制/298 ∣8.1.10 什么是带有位置向量的词嵌入/300 ∣8.1.11 什么是目标检测任务/300 ∣8.1.12 什么是目标检测中的上采样与下采样/301 ∣8.1.13 什么是图片分割任务/301 8.2 实例39:用胶囊网络识别黑白图中服装的图案/302 ∣8.2.1 熟悉样本:了解Fashion-MNIST数据集/302 ∣8.2.2 下载Fashion-MNIST数据集/303 ∣8.2.3 代码实现:读取及显示Fashion-MNIST数据集中的数据/304 ∣8.2.4 代码实现:定义胶囊网络模型类CapsuleNetModel/305 ∣8.2.5 代码实现:实现胶囊网络的基本结构/306 ∣8.2.6 代码实现:构建胶囊网络模型/309 ∣8.2.7 代码实现:载入数据集,并训练胶囊网络模型/310 ∣8.2.8 代码实现:建立会话训练模型/311 ∣8.2.9 运行程序/313 ∣8.2.10 扩展实例40:实现带有EM路由的胶囊网络/314 8.3 实例41:用TextCNN模型分析评论者是否满意/322 ∣8.3.1 熟悉样本:了解电影评论数据集/322 ∣8.3.2 熟悉模型:了解TextCNN模型/322 ∣8.3.3 数据预处理:用preprocessing接口制作字典/323 ∣8.3.4 代码实现:生成NLP文本数据集/326 ∣8.3.5 代码实现:定义TextCNN模型/327 ∣8.3.6 代码实现:训练TextCNN模型/330 ∣8.3.7 运行程序/332 ∣8.3.8 扩展:提升模型精度的其他方法/333 8.4 实例42:用带注意力机制的模型分析评论者是否满意/333 ∣8.4.1 熟悉样本:了解tf.keras接口中的电影评论数据集/333 ∣8.4.2 代码实现:将tf.keras接口中的IMDB数据集还原成句子/334 ∣8.4.3 代码实现:用tf.keras接口开发带有位置向量的词嵌入层/336 ∣8.4.4 代码实现:用tf.keras接口开发注意力层/338 ∣8.4.5 代码实现:用tf.keras接口训练模型/340 ∣8.4.6 运行程序/341 ∣8.4.7 扩展:用Targeted Dropout技术进一步提升模型的性能/342 8.5 实例43:搭建YOLO V3模型,识别图片中的酒杯、水果等物体/343 ∣8.5.1 YOLO V3模型的样本与结构/343 ∣8.5.2 代码实现:Darknet-53 模型的darknet块/344 ∣8.5.3 代码实现:Darknet-53 模型的下采样卷积/345 ∣8.5.4 代码实现:搭建Darknet-53模型,并返回3种尺度特征值/345 ∣8.5.5 代码实现:定义YOLO检测模块的参数及候选框/346 ∣8.5.6 代码实现:定义YOLO检测块,进行多尺度特征融合/347 ∣8.5.7 代码实现:将YOLO检测块的特征转化为bbox attrs单元/347 ∣8.5.8 代码实现:实现YOLO V3的检测部分/349 ∣8.5.9 代码实现:用非极大值抑制算法对检测结果去重/352 ∣8.5.10 代码实现:载入预训练权重/355 ∣8.5.11 代码实现:载入图片,进行目标实物的识别/356 ∣8.5.12 运行程序/358 8.6 实例44:用YOLO V3模型识别门牌号/359 ∣8.6.1 工程部署:准备样本/359 ∣8.6.2 代码实现:读取样本数据,并制作标签/359 ∣8.6.3 代码实现:用tf.keras接口构建YOLO V3模型,并计算损失/364 ∣8.6.4 代码实现:在动态图中训练模型/368 ∣8.6.5 代码实现:用模型识别门牌号/372 ∣8.6.6 扩展:标注自己的样本/374 8.7 实例45:用Mask R-CNN模型定位物体的像素点/375 ∣8.7.1 下载COCO数据集及安装pycocotools/376 ∣8.7.2 代码实现:验证pycocotools及读取COCO数据集/377 ∣8.7.3 拆分Mask R-CNN模型的处理步骤/383 ∣8.7.4 工程部署:准备代码文件及模型/385 ∣8.7.5 代码实现:加载数据创建模型,并输出模型权重/385 ∣8.7.6 代码实现:搭建残差网络ResNet/387 ∣8.7.7 代码实现:搭建Mask R-CNN模型的骨干网络ResNet/393 ∣8.7.8 代码实现:可视化Mask R-CNN模型骨干网络的特征输出/396 ∣8.7.9 代码实现:用特征金字塔网络处理骨干网络特征/400 ∣8.7.10 计算RPN中的锚点/402 ∣8.7.11 代码实现:构建RPN/403 ∣8.7.12 代码实现:用非极大值抑制算法处理RPN的结果/405 ∣8.7.13 代码实现:提取RPN的检测结果/410 ∣8.7.14 代码实现:可视化RPN的检测结果/412 ∣8.7.15 代码实现:在MaskRCNN类中对ROI区域进行分类/415 ∣8.7.16 代码实现:金字塔网络的区域对齐层(ROIAlign)中的区域框与特征的匹配算法/416 ∣8.7.17 代码实现:在金字塔网络的ROIAlign层中按区域边框提取内容/418 ∣8.7.18 代码实现:调试并输出ROIAlign层的内部运算值/421 ∣8.7.19 代码实现:对ROI内容进行分类/422 ∣8.7.20 代码实现:用检测器DetectionLayer检测ROI内容,得到最终的实物矩形/426 ∣8.7.21 代码实现:根据ROI内容进行实物像素分割/432 ∣8.7.22 代码实现:用Mask R-CNN模型分析图片/436 ∣ 8.8 实例46:训练Mask R-CNN模型,进行形状的识别/439 ∣8.8.1 工程部署:准备代码文件及模型/440 ∣8.8.2 样本准备:生成随机形状图片/440 ∣8.8.3 代码实现:为Mask R-CNN模型添加损失函数/442 ∣8.8.4 代码实现:为Mask R-CNN模型添加训练函数,使其支持微调与全网训练/444 ∣8.8.5 代码实现:训练并使用模型/446 ∣8.8.6 扩展:替换特征提取网络/449 - 第9章 循环神经网络(RNN)——处理序列样本的神经网络/450 9.1 快速导读/450 ∣9.1.1 什么是循环神经网络/450 ∣9.1.2 了解RNN模型的基础单元LSTM与GRU/451 ∣9.1.3 认识QRNN单元/451 ∣9.1.4 认识SRU单元/451 ∣9.1.5 认识IndRNN单元/452 ∣9.1.6 认识JANET单元/453 ∣9.1.7 优化RNN模型的技巧/453 ∣9.1.8 了解RNN模型中多项式分布的应用/453 ∣9.1.9 了解注意力机制的Seq2Seq框架/454 ∣9.1.10 了解BahdanauAttention与LuongAttention/456 ∣9.1.11 了解单调注意力机制/457 ∣9.1.12 了解混合注意力机制/458 ∣9.1.13 了解Seq2Seq接口中的采样接口(Helper)/460 ∣9.1.14 了解RNN模型的Wrapper接口/460 ∣9.1.15 什么是时间序列(TFTS)框架/461 ∣9.1.16 什么是梅尔标度/461 ∣9.1.17 什么是短时傅立叶变换/462 9.2 实例47:搭建RNN模型,为女孩生成英文名字/463 ∣9.2.1 代码实现:读取及处理样本/463 ∣9.2.2 代码实现:构建Dataset数据集/466 ∣9.2.3 代码实现:用tf.keras接口构建生成式RNN模型/467 ∣9.2.4 代码实现:在动态图中训练模型/468 ∣9.2.5 代码实现:载入检查点文件并用模型生成名字/469 ∣9.2.6 扩展:用RNN模型编写文章/471 9.3 实例48:用带注意力机制的Seq2Seq模型为图片添加内容描述/471 ∣9.3.1 设计基于图片的Seq2Seq/471 ∣9.3.2 代码实现:图片预处理——用ResNet提取图片特征并保存/472 ∣9.3.3 代码实现:文本预处理——过滤处理、字典建立、对齐与向量化处理/475 ∣9.3.4 代码实现:创建数据集/477 ∣9.3.5 代码实现:用tf.keras接口构建Seq2Seq模型中的编码器/477 ∣9.3.6 代码实现:用tf.keras接口构建Bahdanau类型的注意力机制/478 ∣9.3.7 代码实现:搭建Seq2Seq模型中的解码器Decoder/478 ∣9.3.8 代码实现:在动态图中计算Seq2Seq模型的梯度/480 ∣9.3.9 代码实现:在动态图中为Seq2Seq模型添加检查点功能/480 ∣9.3.10 代码实现:在动态图中训练Seq2Seq模型/481 ∣9.3.11 代码实现:用多项式分布采样获取图片的内容描述/482 9.4 实例49:用IndRNN与IndyLSTM单元制作聊天机器人/485 ∣9.4.1 下载及处理样本/486 ∣9.4.2 代码实现:读取样本,分词并创建字典/487 ∣9.4.3 代码实现:对样本进行向量化、对齐、填充预处理/489 ∣9.4.4 代码实现:在Seq2Seq模型中加工样本/489 ∣9.4.5 代码实现:在Seq2Seq模型中,实现基于IndRNN与IndyLSTM的动态多层RNN编码器/491 ∣9.4.6 代码实现:为Seq2Seq模型中的解码器创建Helper/491 ∣9.4.7 代码实现:实现带有Bahdanau注意力、dropout、OutputProjectionWrapper的解码器/492 ∣9.4.8 代码实现:在Seq2Seq模型中实现反向优化/493 ∣9.4.9 代码实现:创建带有钩子函数的估算器,并进行训练/494 ∣9.4.10 代码实现:用估算器框架评估模型/496 ∣9.4.11 扩展:用注意力机制的Seq2Seq模型实现中英翻译/498 9.5 实例50:预测飞机发动机的剩余使用寿命/498 ∣9.5.1 准备样本/499 ∣9.5.2 代码实现:预处理数据——制作数据集的输入样本与标签/500 ∣9.5.3 代码实现:建立带有JANET单元的多层动态RNN模型/504 ∣9.5.4 代码实现:训练并测试模型/505 ∣9.5.5 运行程序/507 ∣9.5.6 扩展:为含有JANET单元的RNN模型添加注意力机制/508 9.6 实例51:将动态路由用于RNN模型,对路透社新闻进行分类/509 ∣9.6.1 准备样本/509 ∣9.6.2 代码实现:预处理数据——对齐序列数据并计算长度/510 ∣9.6.3 代码实现:定义数据集/510 ∣9.6.4 代码实现:用动态路由算法聚合信息/511 ∣9.6.5 代码实现:用IndyLSTM单元搭建RNN模型/513 ∣9.6.6 代码实现:建立会话,训练网络/514 ∣9.6.7 扩展:用分级网络将文章(长文本数据)分类/515 9.7 实例52:用TFTS框架预测某地区每天的出生人数/515 ∣9.7.1 准备样本/515 ∣9.7.2 代码实现:数据预处理——制作TFTS框架中的读取器/515 ∣9.7.3 代码实现:用TFTS框架定义模型,并进行训练/516 ∣9.7.4 代码实现:用TFTS框架评估模型/517 ∣9.7.5 代码实现:用模型进行预测,并将结果可视化/517 ∣9.7.6 运行程序/518 ∣9.7.7 扩展:用TFTS框架进行异常值检测/519 9.8 实例53:用Tacotron模型合成中文语音(TTS)/520 ∣9.8.1 准备安装包及样本数据/520 ∣9.8.2 代码实现:将音频数据分帧并转为梅尔频谱/521 ∣9.8.3 代码实现:用多进程预处理样本并保存结果/523 ∣9.8.4 拆分Tacotron网络模型的结构/525 ∣9.8.5 代码实现:搭建CBHG网络/527 ∣9.8.6 代码实现:构建带有混合注意力机制的模块/529 ∣9.8.7 代码实现:构建自定义wrapper/531 ∣9.8.8 代码实现:构建自定义采样器/534 ∣9.8.9 代码实现:构建自定义解码器/537 ∣9.8.10 代码实现:构建输入数据集/539 ∣9.8.11 代码实现:构建Tacotron网络/542 ∣9.8.12 代码实现:构建Tacotron网络模型的训练部分/545 ∣9.8.13 代码实现:训练模型并合成音频文件/546 ∣9.8.14 扩展:用pypinyin模块实现文字到声音的转换/551 - ========第4篇 高级 - 第10章 生成式模型——能够输出内容的模型/554 10.1 快速导读/554 ∣10.1.1 什么是自编码网络模型/554 ∣10.1.2 什么是对抗神经网络模型/554 ∣10.1.3 自编码网络模型与对抗神经网络模型的关系/555 ∣10.1.4 什么是批量归一化中的自适应模式/555 ∣10.1.5 什么是实例归一化/556 ∣10.1.6 了解SwitchableNorm及更多的归一化方法/556 ∣10.1.7 什么是图像风格转换任务/557 ∣10.1.8 什么是人脸属性编辑任务/558 ∣10.1.9 什么是TFgan框架/558 10.2 实例54:构建DeblurGAN模型,将模糊相片变清晰/559 ∣10.2.1 获取样本/559 ∣10.2.2 准备SwitchableNorm算法模块/560 ∣10.2.3 代码实现:构建DeblurGAN中的生成器模型/560 ∣10.2.4 代码实现:构建DeblurGAN中的判别器模型/562 ∣10.2.5 代码实现:搭建DeblurGAN的完整结构/563 ∣10.2.6 代码实现:引入库文件,定义模型参数/563 ∣10.2.7 代码实现:定义数据集,构建正反向模型/564 ∣10.2.8 代码实现:计算特征空间损失,并将其编译到生成器模型的训练模型中/566 ∣10.2.9 代码实现:按指定次数训练模型/568 ∣10.2.10 代码实现:用模型将模糊相片变清晰/569 ∣10.2.11 练习题/572 ∣10.2.12 扩展:DeblurGAN模型的更多妙用/572 10.3 实例55:构建AttGAN模型,对照片进行加胡子、加头帘、加眼镜、变年轻等修改/573 ∣10.3.1 获取样本/573 ∣10.3.2 了解AttGAN模型的结构/574 ∣10.3.3 代码实现:实现支持动态图和静态图的数据集工具类/575 ∣10.3.4 代码实现:将CelebA做成数据集/577 ∣10.3.5 代码实现:构建AttGAN模型的编码器/581 ∣10.3.6 代码实现:构建含有转置卷积的解码器模型/582 ∣10.3.7 代码实现:构建AttGAN模型的判别器模型部分/584 ∣10.3.8 代码实现:定义模型参数,并构建AttGAN模型/585 ∣10.3.9 代码实现:定义训练参数,搭建正反向模型/587 ∣10.3.10 代码实现:训练模型/592 ∣10.3.11 扩展实例56:为人脸添加不同的眼镜/595 ∣10.3.12 扩展:AttGAN模型的局限性/597 10.4 实例57:用RNN.WGAN模型模拟生成恶意请求/597 ∣10.4.1 获取样本:通过Panabit设备获取恶意请求样本/597 ∣10.4.2 了解RNN.WGAN模型/600 ∣10.4.3 代码实现:构建RNN.WGAN模型/601 ∣10.4.4 代码实现:训练指定长度的RNN.WGAN模型/607 ∣10.4.5 代码实现:用长度依次递增的方式训练模型/612 ∣10.4.6 运行代码/613 ∣10.4.7 扩展:模型的使用及优化/614 - 第11章 模型的攻与防——看似智能的AI也有脆弱的一面/616 11.1 快速导读/616 ∣11.1.1 什么是FGSM方法/616 ∣11.1.2 什么是cleverhans模块/616 ∣11.1.3 什么是黑箱攻击/617 ∣11.1.4 什么是基于雅可比矩阵的数据增强方法/618 ∣11.1.5 什么是数据中毒攻击/620 11.2 实例58:用FGSM方法生成样本,并攻击PNASNet模型,让其将“狗”识别成“盘子”/621 ∣11.2.1 代码实现:创建PNASNet模型/621 ∣11.2.2 代码实现:搭建输入层并载入图片,复现PNASNet模型的预测效果/623 ∣11.2.3 代码实现:调整参数,定义图片的变化范围/624 ∣11.2.4 代码实现:用梯度下降方式生成对抗样本/625 ∣11.2.5 代码实现:用生成的样本攻击模型/626 ∣11.2.6 扩展:如何防范攻击模型的行为/627 ∣11.2.7 代码实现:将数据增强方式用在使用场景,以加固PNASNet模型,防范攻击/627 11.3 实例59:击破数据增强防护,制作抗旋转对抗样本/629 ∣11.3.1 代码实现:对输入的数据进行多次旋转/629 ∣11.3.2 代码实现:生成并保存鲁棒性更好的对抗样本/630 ∣11.3.3 代码实现:在PNASNet模型中比较对抗样本的效果/631 11.4 实例60:以黑箱方式攻击未知模型/633 ∣11.4.1 准备工程代码/633 ∣11.4.2 代码实现:搭建通用模型框架/634 ∣11.4.3 代码实现:搭建被攻击模型/637 ∣11.4.4 代码实现:训练被攻击模型/638 ∣11.4.5 代码实现:搭建替代模型/639 ∣11.4.6 代码实现:训练替代模型/639 ∣11.4.7 代码实现:黑箱攻击目标模型/641 ∣11.4.8 扩展:利用黑箱攻击中的对抗样本加固模型/645 - =====第5篇 实战——深度学习实际应用 - 第12章 TensorFlow模型制作——一种功能,多种身份/648 12.1 快速导读/648 ∣12.1.1 详细分析检查点文件/648 ∣12.1.2 什么是模型中的冻结图/649 ∣12.1.3 什么是TF Serving模块与saved_model模块/649 ∣12.1.4 用编译子图(defun)提升动态图的执行效率/649 ∣12.1.5 什么是TF_Lite模块/652 ∣12.1.6 什么是TFjs-converter模块/653 12.2 实例61:在源码与检查点文件分离的情况下,对模型进行二次训练/653 ∣12.2.1 代码实现:在线性回归模型中,向检查点文件中添加指定节点/654 ∣12.2.2 代码实现:在脱离源码的情况下,用检查点文件进行二次训练/657 ∣12.2.3 扩展:更通用的二次训练方法/659 12.3 实例62:导出/导入冻结图文件/661 ∣12.3.1 熟悉TensorFlow中的freeze_graph工具脚本/661 ∣12.3.2 代码实现:从线性回归模型中导出冻结图文件/662 ∣12.3.3 代码实现:导入冻结图,并用模型进行预测/664 12.4 实例63:逆向分析冻结图模型/665 ∣12.4.1 使用import_to_tensorboard工具/666 ∣12.4.2 用TensorBoard工具查看模型结构/666 12.5 实例64:用saved_model模块导出与导入模型文件/668 ∣12.5.1 代码实现:用saved_model模块导出模型文件/668 ∣12.5.2 代码实现:用saved_model模块导入模型文件/669 ∣12.5.3 扩展:用saved_model模块导出带有签名的模型文件/670 12.6 实例65:用saved_model_cli工具查看及使用saved_model模型/672 ∣12.6.1 用show参数查看模型/672 ∣12.6.2 用run参数运行模型/673 ∣12.6.3 扩展:了解scan参数的黑名单机制/674 ∣12.7 实例66:用TF-Hub库导入、导出词嵌入模型文件/674 ∣12.7.1 代码实现:模拟生成通用词嵌入模型/674 ∣12.7.2 代码实现:用TF-Hub库导出词嵌入模型/675 ∣12.7.3 代码实现:导出TF-Hub模型/678 ∣12.7.4 代码实现:用TF-Hub库导入并使用词嵌入模型/680 - 第13章 部署TensorFlow模型——模型与项目的深度结合/681 13.1 快速导读/681 ∣13.1.1 什么是gRPC服务与HTTP/REST API/681 ∣13.1.2 了解TensorFlow对移动终端的支持/682 ∣13.1.3 了解树莓派上的人工智能/683 13.2 实例67:用TF_Serving部署模型并进行远程使用/684 ∣13.2.1 在Linux系统中安装TF_Serving/684 ∣13.2.2 在多平台中用Docker安装TF_Serving/685 ∣13.2.3 编写代码:固定模型的签名信息/686 ∣13.2.4 在Linux中开启TF_Serving服务/688 ∣13.2.5 编写代码:用gRPC访问远程TF_Serving服务/689 ∣13.2.6 用HTTP/REST API访问远程TF_Serving服务/691 ∣13.2.7 扩展:关于TF_Serving的更多例子/694 13.3 实例68:在安卓手机上识别男女/694 ∣13.3.1 准备工程代码/694 ∣13.3.2 微调预训练模型/695 ∣13.3.3 搭建安卓开发环境/698 ∣13.3.4 制作lite模型文件/701 ∣13.3.5 修改分类器代码,并运行APP/702 13.4 实例69:在iPhone手机上识别男女并进行活体检测/703 ∣13.4.1 搭建iOS开发环境/703 ∣13.4.2 布署工程代码并编译/704 ∣13.4.3 载入Lite模型,实现识别男女功能/706 ∣13.4.4 代码实现:调用摄像头并采集视频流/707 ∣13.4.5 代码实现:提取人脸特征/710 ∣13.4.6 活体检测算法介绍/712 ∣13.4.7 代码实现:实现活体检测算法/713 ∣13.4.8 代码实现:完成整体功能并运行程序/714 13.5 实例70:在树莓派上搭建一个目标检测器/717 ∣13.5.1 安装树莓派系统/718 ∣13.5.2 在树莓派上安装TensorFlow/721 ∣13.5.3 编译并安装Protobuf/725 ∣13.5.4 安装OpenCV/726 ∣13.5.5 下载目标检测模型SSDLite/726 ∣13.5.6 代码实现:用SSDLite 模型进行目标检测/727 - 第14章 商业实例——科技源于生活,用于生活/730 14.1 实例71:将特征匹配技术应用在商标识别领域/730 ∣14.1.1 项目背景/730 ∣14.1.2 技术方案/730 ∣14.1.3 预处理图片——统一尺寸/731 ∣14.1.4 用自编码网络加夹角余弦实现商标识别/731 ∣14.1.5 用卷积网络加triplet-loss提升特征提取效果/731 ∣14.1.6 进一步的优化空间/732 14.2 实例72:用RNN抓取蠕虫病毒/732 ∣14.2.1 项目背景/733 ∣14.2.2 判断是否恶意域名不能只靠域名/733 ∣14.2.3 如何识别恶意域名/733 14.3 实例73:迎宾机器人的技术关注点——体验优先/734 ∣14.3.1 迎宾机器人的产品背景/734 ∣14.3.2 迎宾机器人的实现方案/734 ∣14.3.3 迎宾机器人的同类产品/736 14.4 实例74:基于摄像头的路边停车场项目/737 ∣14.4.1 项目背景/737 ∣14.4.2 技术方案/738 ∣14.4.3 方案缺陷/738 ∣14.4.4 工程化补救方案/738 14.5 实例75:智能冰箱产品——硬件成本之痛/739 ∣14.5.1 智能冰箱系列的产品背景/739 ∣14.5.2 智能冰箱的技术基础/740 ∣14.5.3 真实的非功能性需求——低成本/740 ∣14.5.4 未来的技术趋势及应对策略/741

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个