商品簡介
目次
第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
主題書展
更多主題書展
更多書展本週66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。