您的浏览器不支持JavaScript,请开启后继续
TensorFlow 2 人工神经网络学习手册

TensorFlow 2 人工神经网络学习手册

  • 作者
  • (印度)P.萨朗(Poornachandra Sarang) 编著

随着深度学习理论的不断发展以及 TensorFlow 的广泛应用,基于深度学习的信号分析模型在不同领域产生了深远的影响。本书为TensorFlow 2的使用指南,从软件安装、数据下载、文件管理等方面入手为初级开发者提供细致而全面的介绍。在此基础上,本书系统地介绍了TensorFlow 2在人工神经网络实战项目中的应用,全面覆盖了各种深度学习架构,内容涉及:入门级的二分类模型、...


  • ¥168.00

ISBN: 978-7-122-40759-7

版次: 1

出版时间: 2022-04-01

图书介绍

ISBN:978-7-122-40759-7

语种:汉文

开本:16

出版时间:2022-04-01

装帧:平

页数:426

编辑推荐

理论与实际项目结合,实例丰富,讲解详细,可操作性强,易于理解和掌握

图书前言

随着深度学习技术的不断发展,使用TensorFlow搭建的机器学习模型在多个领域产生了巨大影响。对于开发人员来说,这是一个很好的学习机会,可以将软件开发技能应用于更多实际项目中。了解时下热点的深度学习模型十分有必要,因此,本书以项目为导向,提供了基于深度神经网络和最新版本 TensorFlow 的实战项目,全面覆盖了各种深度学习模型。
第 1 章首先介绍了 TensorFlow 2,深度剖析了TensorFlow被广泛使用的原因,描述了 TensorFlow 的各种功能,包括使用tf.keras搭建模型、分布式训练、模型部署及数据通道的使用,并指导了本书开发环境的搭建。
第 2 章更加深入地介绍了 TensorFlow 2。按照惯例,第2章从一个简单的“Hello World”类应用程序开始,介绍了完整的机器学习开发过程。接下来使用TensorFlow完成机器学习的入门项目,即二分类问题。通过此项目的学习,有助于读者了解数据预处理、使用 tf.keras 的预留接口定义神经网络、模型训练、使用 TensorBoard评估分类模型性能及学习使用混淆矩阵。
第 3 章详细介绍了 tf.keras 模块及带有模型构建功能的API。本章向读者介绍如何使用TensorFlow面向对象的编程模式搭建网络模型及如何通过子类创建自定义的层。此外,读者将学习如何使用 TensorFlow 的 SavedModel 接口及几种部分或完整保存模型的方法。学习了上述基本方法后,读者将使用 tf.keras 中预定义的卷积神经网络层进行多分类项目实战,本书将向读者展示如何测试不同的网络架构并优化模型性能。
由于训练深度神经网络需要充足的计算资源,因此在第 4 章将向读者展示如何使用迁移学习技术加载预训练的网络模型。本章涉及两个项目:第1个项目展示如何使用在ImageNet数据集中预训练的分类器对其他图像集进行分类;第2个项目介绍如何基于预训练模型构建自己的分类器。
学习使用深度学习技术都是从分类和回归问题入手。在前面的章节中,我们深入探讨了分类问题,接下来,是否可以使用深度神经网络进行回归分析?针对这一问题,已有几种基于统计的深度学习模型可供我们分析。因此,第 5 章将基于3种不同的神经网络架构展示如何使用深度神经网络完成回归问题。
尽管使用预训练模型可以提高自定义模型的开发效率,但在许多情况下,很难找到合适的预训练模型。从头开始进行模型开发需要大量组件,TensorFlow 中的Estimators可以帮助开发过程中处理复杂的组件。第 6 章介绍Estimators的使用,共包含4个项目。前两个项目描述如何使用预定义的Estimators进行分类与回归,第3个项目讨论如何从头开始创建自定义的Estimators,最后一个项目讨论为预训练模型创建Estimators。
第7章讨论文本生成技术,介绍了用于文本生成的循环神经网络(RNN)和长短期记忆力模块(LSTM)。第1个项目展示了如何将 LSTM 用于为新生儿起名的简单应用。第2个项目使用更加高级的文本生成技术,创建与列夫·托尔斯泰著名小说《战争与和平》的语言风格相匹配的文本。由于训练文本生成模型耗时较长,本章最后介绍如何在中断训练后继续进行模型训练。
第8章将进一步介绍文本生成技术,讲解了 seq2seq 模型、编码器和解码器架构及用于文本翻译的注意力模型。本章深入介绍了使用GloVe词嵌入模块的英语到西班牙语翻译器,向读者展示了如何使用编码器、解码器和注意力层自定义机器学习模型。
第9章介绍了自然语言处理中最先进的文本生成技术,即Transformer。通过一个完整的实战项目教读者如何用Python 语言构建Transformer,并在没有预训练模型的前提下,在Transformer中使用双向编码器。
了解了文本生成技术后,本书第10章将讲解使用深度学习技术进行图像处理。第 10 章使用之前学到的长短期记忆力模块为图像生成标题。该项目使用预训练的 InceptionV3 模型进行图像处理,这是第 4 章介绍的迁移学习的实际应用。通过此项目开发,读者将学会如何使用 Bahdanau Attention 创建解码器,以及使用此模型为任何图像添加描述。
第11章进入机器学习的另一个领域,即时间序列分析和预测。本章提供了两个完整的项目,包括单变量时间序列预测及多变量时间序列预测。
第12章讲解图像处理领域中基于深度学习的风格迁移技术,可以将著名画家的风格应用于用相机拍摄的照片中,使照片看起来像著名画家的作品。本章包含两个项目:第1个项目使用来自 TensorFlow 中自带的预训练模型快速完成风格迁移;第2个项目深入讲解如何使用经典的 VGG16 架构提取图像和名画的特征,以及如何定义评价标准用于比较风格转换前后的内容和样式损失,并创建最终的风格化图片。
第13章介绍一个重要的深度神经网络架构,即生成对抗网络。本章共包含3个项目,第1个项目和第2个项目分别展示如何使用GAN生成手写数字图像和手写字母图像,第3个项目使用 GAN 生成复杂的动漫彩色角色图像。
第14章涉及一个重要的图像处理技术,即如何对黑白图像进行着色。本章使用 AutoEncoder 为图像着色,共包含两个项目。第1个项目构建了自定义的 AutoEncoder。第2个项目使用预训练的 VGG16 模型进行特征编码,用于提高模型性能。
本书详尽地收集了若干种深度神经网络架构,重点介绍了不同的深度学习模型在现实生活场景中的应用。

精彩书摘

随着深度学习理论的不断发展以及 TensorFlow 的广泛应用,基于深度学习的信号分析模型在不同领域产生了深远的影响。本书为TensorFlow 2的使用指南,从软件安装、数据下载、文件管理等方面入手为初级开发者提供细致而全面的介绍。在此基础上,本书系统地介绍了TensorFlow 2在人工神经网络实战项目中的应用,全面覆盖了各种深度学习架构,内容涉及:入门级的二分类模型、回归模型等;进阶级的文本生成模型、图像生成模型、机器翻译模型、时序预测模型等;以及最新的Transformer模型等。在每个项目中,本书完整地展示了模型设计、网络搭建、模型训练、模型保存、结果预测与显示的全过程,并提供了详细的实现代码。本书将深度学习理论与实际项目结合,为初学者搭建了进入人工智能领域的学习平台,为深度学习算法开发者提供了较为全面的应用范例,充分满足了不同群体的学习需求。

目录

第1章 TensorFlow快速入门	001
1.1 什么是TensorFlow 2.0	002
1.1.1 TensorFlow 2.x平台	002
1.1.2 训练	003
1.1.3 模型保存	005
1.1.4 部署	005
1.2 TensorFlow 2.x提供什么	006
1.2.1 TensorFlow中的tf.keras	006
1.2.2 Eager执行	006
1.2.3 分布式计算	007
1.2.4 TensorBoard	007
1.2.5 视觉套件(Vision Kit)	008
1.2.6 语音套件(Voice Kit)	008
1.2.7 边缘套件(Edge TPU)	008
1.2.8 AIY套件的预训练模型	009
1.2.9 数据管道	009
1.3 安装	009
1.3.1 安装步骤	009
1.3.2 Docker安装	010
1.3.3 无安装	010
1.4 测试	010
总结	012

第2章 深入研究TensorFlow	013
2.1 一个简单的机器学习应用程序	013
2.1.1 创建Colab笔记本	014
2.1.2 导入	015
2.1.3 创建数据	016
2.1.4 定义神经网络	018
2.1.5 编译模型	018
2.1.6 训练网络	018
2.1.7 检查训练结果	019
2.1.8 预测	021
2.1.9 完整源码	022
2.2 使用TensorFlow解决二分类问题	024
2.2.1 创建项目	024
2.2.2 导入	024
2.2.3 挂载Google云盘	025
2.2.4 加载数据	026
2.2.5 数据处理	027
2.2.6 定义ANN	030
2.2.7 模型训练	032
2.2.8 完整源码	036
总结	039

第3章 深入了解tf.keras	040
3.1 开始	040
3.2 用于模型构建的函数式API	041
3.2.1 序列化模型	041
3.2.2 模型子类	043
3.2.3 预定义层	044
3.2.4 自定义层	044
3.3 保存模型	046
3.4 卷积神经网络	049
3.5 使用CNN做图像分类	050
3.5.1 创建项目	051
3.5.2 图像数据	051
3.5.3 加载数据	052
3.5.4 创建训练、测试数据集	052
3.5.5 准备模型训练数据	053
3.5.6 模型开发	055
3.5.7 定义模型	060
3.5.8 保存模型	073
3.5.9 预测未知图像	073
总结	075

第4章 迁移学习	076
4.1 知识迁移	076
4.2 TensorFlow Hub	077
4.2.1 预训练模型	078
4.2.2 模型的使用	079
4.3 ImageNet分类器	080
4.3.1 创建项目	080
4.3.2 分类器URL	080
4.3.3 创建模型	081
4.3.4 准备图像	082
4.3.5 加载标签映射	083
4.3.6 显示预测结果	084
4.3.7 列出所有类别	085
4.3.8 结果讨论	085
4.4 犬种分类器	085
4.4.1 项目简介	086
4.4.2 创建项目	086
4.4.3 加载数据	086
4.4.4 设置图像和标签	088
4.4.5 图像预处理	091
4.4.6 处理图像	091
4.4.7 关联图像与标签	092
4.4.8 创建数据批次	093
4.4.9 显示图像函数	094
4.4.10 选择预训练模型	095
4.4.11 定义模型	095
4.4.12 创建数据集	097
4.4.13 设置TensorBoard	099
4.4.14 训练模型	100
4.4.15 训练日志	100
4.4.16 验证模型性能	101
4.4.17 预测测试图像	101
4.4.18 可视化测试结果	103
4.4.19 预测未知图像	105
4.4.20 使用小数据集训练	106
4.4.21 保存、加载模型	107
4.5 提交你的工作	108
4.6 进一步工作	108
总结	109

第5章 使用神经网络处理回归问题	110
5.1 回归	110
5.1.1 定义	110
5.1.2 应用	111
5.1.3 回归问题	111
5.1.4 回归问题的类型	111
5.2 神经网络中的回归问题	112
5.2.1 创建项目	112
5.2.2 提取特征和标签	113
5.2.3 定义、训练模型	113
5.2.4 预测	114
5.3 分析葡萄酒质量	114
5.3.1 创建项目	114
5.3.2 数据准备	114
5.3.3 下载数据	115
5.3.4 准备数据集	115
5.3.5 创建数据集	115
5.3.6 数据归一化	116
5.3.7 创建模型	119
5.3.8 可视化评价函数	119
5.3.9 小模型	120
5.3.10 中模型	122
5.3.11 大模型	124
5.3.12 解决过拟合	126
5.3.13 结果讨论	129
5.4 损失函数	130
5.4.1 均方误差	130
5.4.2 平均绝对误差	131
5.4.3 Huber损失	131
5.4.4 Log Cosh损失	131
5.4.5 分位数损失	131
5.5 优化器	132
总结	132

第6章 Estimators(估算器)	134
6.1 Estimators概述	134
6.1.1 API接口	135
6.1.2 Estimators的优点	135
6.1.3 Estimators的类型	136
6.1.4 基于Estimators的项目开发流程	137
6.2 设置Estimators	139
6.3 用于分类的DNN分类器	139
6.3.1 加载数据	140
6.3.2 准备数据	140
6.3.3 Estimators输入函数	141
6.3.4 创建Estimators实例	142
6.3.5 模型训练	142
6.3.6 模型评价	143
6.3.7 预测未知数据	144
6.3.8 实验不同的ANN结构	144
6.3.9 项目源码	145
6.4 用于回归的LinearRegressor	147
6.4.1 项目描述	147
6.4.2 创建项目	147
6.4.3 加载数据	148
6.4.4 特征选择	148
6.4.5 数据清洗	149
6.4.6 创建数据集	151
6.4.7 建立特征列	152
6.4.8 定义输入函数	154
6.4.9 创建Estimators实例对象	154
6.4.10 模型训练	155
6.4.11 模型评估	155
6.4.12 项目源码	156
6.5 自定义Estimators	158
6.5.1 创建项目	159
6.5.2 加载数据	159
6.5.3 创建数据集	159
6.5.4 定义模型	159
6.5.5 定义输入函数	160
6.5.6 将模型转换为Estimator	160
6.5.7 模型训练	161
6.5.8 模型评价	161
6.5.9 项目源码	161
6.6 为预训练模型定义Estimators	163
6.6.1 创建项目	163
6.6.2 导入VGG16	163
6.6.3 创建自定义模型	163
6.6.4 编译模型	165
6.6.5 创建Estimator	165
6.6.6 处理数据	165
6.6.7 训练、评价	166
6.6.8 项目源码	166
总结	167

第7章 文本生成	169
7.1 循环神经网络	170
7.1.1 朴素RNN	170
7.1.2 梯度消失和梯度爆炸	171
7.1.3 LSTM(一个特例)	171
7.2 文本生成	174
7.2.1 模型训练	174
7.2.2 预测	175
7.2.3 模型定义	176
7.3 生成新生儿名字	176
7.3.1 创建项目	176
7.3.2 下载文本	177
7.3.3 处理文本	177
7.3.4 定义模型	180
7.3.5 编译	181
7.3.6 创建checkpoints	182
7.3.7 训练	182
7.3.8 预测	182
7.3.9 项目源码-TextGeneration BabyNames 	184
7.3.10 保存、重用模型	188
7.4 高级文本生成	188
7.4.1 创建项目	189
7.4.2 加载文本	189
7.4.3 处理数据	190
7.4.4 定义模型	191
7.4.5 创建checkpoints	191
7.4.6 自定义回调类	192
7.4.7 模型训练	193
7.4.8 结果	193
7.4.9 断点续训练	194
7.4.10 过程观察	195
7.4.11 项目源码	196
7.5 进一步工作	199
总结	199

第8章 语言翻译	200
8.1 sequence-to-sequence 模型	200
8.1.1 编码器、解码器	201
8.1.2 Seq2seq模型的缺点	203
8.2 注意力模型	203
8.3 英语翻译为西班牙语	204
8.3.1 创建项目	204
8.3.2 下载数据集	205
8.3.3 创建数据集	205
8.3.4 数据预处理	207
8.3.5 GloVe词嵌入	212
8.3.6 定义编码器	214
8.3.7 定义解码器	215
8.3.8 注意力网络	216
8.3.9 定义模型	221
8.3.10 模型训练	222
8.3.11 预测	222
8.3.12 项目源码	229
总结	237

第9章 自然语言理解	238
9.1 Transformer简介	238
9.2 Transformer详解	239
9.2.1 下载原始数据	240
9.2.2 创建数据集	240
9.2.3 数据预处理	240
9.2.4 构建语料库	240
9.2.5 准备训练集数据	243
9.2.6 Transformer模型	244
9.2.7 多头注意力(机制)	245
9.2.8 Scaled Dot-Product 注意力模块	248
9.2.9 编码器结构	249
9.2.10 编码器	252
9.2.11 解码器结构	254
9.2.12 定义解码器	257
9.2.13 Transformer模型	259
9.2.14 创建训练模型	261
9.2.15 损失函数	261
9.2.16 优化器	262
9.2.17 编译	262
9.2.18 训练	262
9.2.19 预测	263
9.2.20 测试	263
9.2.21 项目源码	264
9.3 下一步是什么	276
总结	276

第10章 图像描述	278
10.1 项目简介	280
10.2 创建项目	280
10.3 下载数据	280
10.4 解析Token文件	282
10.4.1 加载数据	282
10.4.2 创建列表	283
10.5 加载InceptionV3模型	284
10.6 准备数据集	285
10.7 提取特征	285
10.8 创建词汇表	286
10.9 创建输入序列	286
10.10 创建训练数据集	287
10.11 创建模型	288
10.12 创建编码器	288
10.13 创建解码器	288
10.13.1 Bahdanau注意力机制	289
10.13.2 解码器功能	289
10.13.3 解码器初始化	289
10.13.4 解码器调用方法	290
10.13.5 注意力得分	290
10.13.6 注意力权重	290
10.13.7 上下文向量	291
10.13.8 解码器实现	291
10.14 编码器、解码器实例化	294
10.15 定义优化器和损失函数	294
10.16 创建checkpoints	296
10.17 训练函数	297
10.18 模型训练	298
10.19 模型预测	298
10.20 项目源码	301
总结	310

第11章 时间序列预测	311
11.1 时间序列预测简介	311
11.1.1 什么是时间序列预测	311
11.1.2 预测中的问题	312
11.1.3 时间序列组成	312
11.1.4 单变量与多变量	312
11.2 单变量时间序列分析	313
11.2.1 创建项目	313
11.2.2 准备数据	313
11.2.3 创建训练集和测试集	316
11.2.4 创建输入张量	319
11.2.5 构建模型	320
11.2.6 编译和训练	320
11.2.7 评估	320
11.2.8 预测下一个数据点	322
11.2.9 预测数据点区间	323
11.2.10 项目源码	325
11.3 多变量时间序列分析	330
11.3.1 创建项目	330
11.3.2 准备数据	331
11.3.3 检查平稳性	331
11.3.4 探索数据	332
11.3.5 准备数据	333
11.3.6 创建模型	335
11.3.7 训练	335
11.3.8 评估	335
11.3.9 预测未来点	336
11.3.10 预测数据点区间	337
11.3.11 项目源码	339
总结	343

第12章 风格迁移	344
12.1 快速风格迁移	345
12.1.1 创建项目	345
12.1.2 下载图像	345
12.1.3 准备模型输入图像	347
12.1.4 执行风格迁移	348
12.1.5 显示输出	348
12.1.6 更多结果	348
12.1.7 项目源码	350
12.2 自定义风格迁移	351
12.2.1 VGG16结构	352
12.2.2 创建项目	352
12.2.3 下载图像	353
12.2.4 显示图像	354
12.2.5 图像预处理	354
12.2.6 构建模型	355
12.2.7 内容损失	357
12.2.8 风格损失	357
12.2.9 全变分损失	357
12.2.10 计算内容和风格损失	358
12.2.11 Evaluator类	359
12.2.12 生成输出图像	359
12.2.13 显示图像	360
12.2.14 项目源码	361
总结	365

第13章 图像生成	366
13.1 GAN(生成对抗网络)	366
13.2 GAN如何工作	366
13.3 生成器	367
13.4 判别器	367
13.5 数学公式	368
13.6 数字生成	369
13.6.1 创建项目	369
13.6.2 加载数据集	369
13.6.3 准备数据集	370
13.6.4 定义生成器模型	370
13.6.5 测试生成器	372
13.6.6 定义判别器模型	373
13.6.7 测试判别器	374
13.6.8 定义损失函数	375
13.6.9 定义新训练函数	376
13.6.10 项目源码	380
13.7 字母生成	385
13.7.1 下载数据	385
13.7.2 创建单字母数据集	385
13.7.3 输出结果	386
13.7.4 项目源码	387
13.8 印刷体到手写体	392
13.9 生成彩色卡通图像	392
13.9.1 下载数据集	392
13.9.2 创建数据集	392
13.9.3 显示图像	393
13.9.4 输出结果	394
13.9.5 项目源码	394
总结	400

第14章 图像转换	401
14.1 自动编码器	401
14.2 色彩空间	402
14.3 网络配置	402
14.3.1 Vanilla模型	403
14.3.2 Merged模型	403
14.3.3 使用预训练的Merged模型	403
14.4 自动编码器	404
14.4.1 加载数据	405
14.4.2 创建训练、测试数据集	406
14.4.3 准备训练数据	406
14.4.4 定义模型	407
14.4.5 模型训练	410
14.4.6 测试	410
14.4.7 未知图像预测	412
14.4.8 项目源码	413
14.5 编码器的预训练模型	418
14.5.1 项目简介	418
14.5.2 定义模型	418
14.5.3 提取特征	418
14.5.4 定义网络	419
14.5.5 模型训练	420
14.5.6 预测	421
14.5.7 未知图像预测	421
14.5.8 项目源码	422
总结	426

发送电子邮件联系我们