书籍详情

JavaScript深度学习

JavaScript深度学习

作者:蔡善清,[美] 斯坦利·比列斯奇,[美] 埃里克·D.,尼尔森,[美] 弗朗索瓦·肖莱 著,程泽 译

出版社:人民邮电出版社

出版时间:2021-04-01

ISBN:9787115561145

定价:¥129.80

购买这本书可以去
内容简介
  本书教你使用TensorFlow.js构建强大的JavaScript深度学习应用程序。本书作者均是谷歌大脑团队的资深工程师,也是TensorFlow.js的核心开发人员。你将了解JavaScript与深度学习结合的独特优势,掌握客户端预测与分析、图像识别、监督学习、迁移学习、强化学习等核心概念,并动手在浏览器中实现计算机视觉和音频处理以及自然语言处理,构建并训练神经网络,利用客户端数据优化机器学习模型,开发基于浏览器的交互式游戏,同时为深度学习探索新的应用空间。你还可以获得深度学习模型构建过程中不同问题所涉及的策略和相关限制的实用知识,同时了解训练和部署这些模型的具体步骤以及重要的注意事项。
作者简介
  蔡善清(Shanqing Cai)谷歌公司软件工程师,深度参与了TensorFlow和TensorFlow.js的开发工作。从清华大学毕业后,他前往约翰斯·霍普金斯大学和麻省理工学院深造,并取得了麻省理工学院博士学位。斯坦利·比列斯奇(Stanley Bileschi)谷歌公司TensorFlow可用性团队技术负责人,领导团队构建了TensorFlow.js高阶API。埃里克·D. 尼尔森(Eric D. Nielsen)谷歌公司软件工程师,深度参与了TensorFlow.js的开发工作。弗朗索瓦·肖莱(Fran?ois Chollet)Keras之父,TensorFlow机器学习框架贡献者,Kaggle竞赛教练,目前任职于谷歌公司,从事人工智能研究,另著有《Python深度学习》。【译者简介】程泽软件工程师,先后任职于AMD、IBM、ThoughtWorks等企业,对机器学习在设备端的蓬勃发展充满期待。
目录
第 一部分 动机和基本概念
第 1章 深度学习和JavaScript 2
1.1 人工智能、机器学习、神经网络和深度学习 4
1.1.1 人工智能 4
1.1.2 机器学习:它和传统编程有何不同 5
1.1.3 神经网络和深度学习 9
1.1.4 进行深度学习的必要性 12
1.2 为何要结合JavaScript和机器学习 14
1.2.1 用Node.js进行深度学习 19
1.2.2 JavaScript生态系统 20
1.3 为何选用TensorFlow.js 21
1.3.1 TensorFlow、Keras和TensorFlow.js的前世今生 21
1.3.2 为何选用TensorFlow.js 24
1.3.3 TensorFlow.js在全球的应用情况 25
1.3.4 本书中的TensorFlow.js知识 26
1.4 练习 27
1.5 小结 27
第二部分 深入浅出TensorFlow.js
第 2章 TensorFlow.js入门:从简单的线性回归开始 30
2.1 示例1:用TensorFlow.js预测下载任务所需时间 30
2.1.1 项目概览:预测下载任务所需时间 31
2.1.2 关于代码清单和控制台交互的注意事项 32
2.1.3 创建和格式化数据 32
2.1.4 定义简单的模型 35
2.1.5 使模型拟合训练集 37
2.1.6 用经过训练的模型进行预测 39
2.1.7 示例1 小结 40
2.2 model.fit()内部原理剖析:示例1中的梯度下降算法 41
2.2.1 直观理解梯度下降算法优化 41
2.2.2 探索梯度下降算法的内部原理:反向传播算法 46
2.3 示例2:涉及多个输入特征的线性回归 50
2.3.1 波士顿房价数据集 50
2.3.2 从GitHub获取并运行波士顿房价预测项目 51
2.3.3 读取波士顿房价数据 53
2.3.4 准确定义波士顿房价问题 54
2.3.5 线性回归前的准备工作:数据标准化 55
2.3.6 对波士顿房价数据集进行线性回归 59
2.4 如何理解模型 62
2.4.1 解释习得的权重 62
2.4.2 获取模型内部权重 64
2.4.3 关于可解释性的注意事项 65
2.5 练习 65
2.6 小结 65
第3章 添加非线性:升级加权和 67
3.1 非线性的定义及其优势 67
3.1.1 直观地理解神经网络中的非线性 69
3.1.2 超参数与超参数优化 75
3.2 输出端的非线性:分类任务的模型 77
3.2.1 二分类定义 78
3.2.2 度量二分类器的性能:准确率、精确率、召回率 81
3.2.3 ROC曲线:展示二分类问题中的取舍关系 83
3.2.4 二元交叉熵:二分类问题的损失函数 87
3.3 多分类问题 90
3.3.1 对分类数据进行one-hot编码 90
3.3.2 归一化指数函数:softmax函数 92
3.3.3 分类交叉熵:多分类问题的损失函数 94
3.3.4 混淆矩阵:更细粒度地分析多分类问题 95
3.4 练习 97
3.5 小结 98
第4章 用convnet 识别图像和音频 99
4.1 从向量到张量:图像数据的表示方法 99
4.2 你的第 一个convnet 101
4.2.1 conv2d层 103
4.2.2 maxPooling2d层 107
4.2.3 重复出现的卷积层加池化层组合模式 108
4.2.4 扁平化密集层 109
4.2.5 训练convnet 111
4.2.6 用convnet做预测 114
4.3 告别浏览器:用Node.js更快地训练模型 117
4.3.1 安装使用tfjs-node所需的依赖和模块 117
4.3.2 在浏览器中加载Node.js中保存的模型 122
4.4 口语单词识别:对音频数据使用convnet 124
4.5 练习 130
4.6 小结 130
第5章 迁移学习:复用预训练的神经网络 132
5.1 迁移学习简介:复用预训练模型 132
5.1.1 基于兼容的输出形状进行迁移学习:固化层 134
5.1.2 对不兼容的输出形状进行迁移学习:用基模型的输出创建新模型 139
5.1.3 用微调最大化迁移学习的收益:音频示例 150
5.2 通过对convnet进行迁移学习实现目标检测 159
5.2.1 基于合成场景的简单目标识别问题 160
5.2.2 深入了解如何实现简单的目标检测 161
5.3 练习 168
5.4 小结 169
第三部分 TensorFlow.js高级深度学习
第6章 处理数据 172
6.1 用tf.data管理数据 173
6.1.1 tf.data.Dataset对象 173
6.1.2 创建tf.data.Dataset对象 174
6.1.3 读取数据集对象中的数据 178
6.1.4 操作tfjs-data数据集 179
6.2 用model.fitDataset训练模型 183
6.3 获取数据的常见模式 188
6.3.1 处理CSV格式的数据 188
6.3.2 用tf.data.webcam()获取视频数据 193
6.3.3 用tf.data.microphone()获取音频数据 196
6.4 处理有缺陷的数据 198
6.4.1 数据理论 199
6.4.2 检测并清洗数据中的缺陷 202
6.5 数据增强 208
6.6 练习 211
6.7 小结 211
第7章 可视化数据和模型 212
7.1 数据可视化 212
7.1.1 用tfjs-vis模块可视化数据 213
7.1.2 综合性案例研究:用tfjs-vis模块可视化气象数据 220
7.2 可视化训练后的模型 225
7.2.1 可视化convnet内部激活函数的输出 226
7.2.2 找到卷积层的敏感点:最大化激活函数输出的输入图像 229
7.2.3 可视化和解读convnet的分类结果 233
7.3 延展阅读和补充资料 234
7.4 练习 235
7.5 小结 235
第8章 欠拟合、过拟合,以及机器学习的通用流程 236
8.1 定义气温预测问题 236
8.2 欠拟合、过拟合,以及应对措施 240
8.2.1 欠拟合 240
8.2.2 过拟合 242
8.2.3 用权重正则化应对过拟合并可视化其成效 244
8.3 机器学习的通用流程 248
8.4 练习 250
8.5 小结 251
第9章 针对序列和文本的深度学习 252
9.1 用RNN对气温预测问题进行第二次尝试 253
9.1.1 为何密集层无法为序列中的顺序信息建模 253
9.1.2 RNN层如何为序列中的顺序建模 255
9.2 构建针对文本的深度学习模型 263
9.2.1 文本在机器学习中的表示方法:one-hot编码和multi-hot编码 264
9.2.2 对情感分析问题的第 一次尝试 266
9.2.3 一种更高效的文本表示:词嵌入 267
9.2.4 1D convnet 269
9.3 采用注意力机制的序列到序列任务 277
9.3.1 定义序列到序列任务 277
9.3.2 编码器 解码器架构和注意力机制 279
9.3.3 详解基于注意力机制的编码器 解码器模型 282
9.4 延展阅读 286
9.5 练习 286
9.6 小结 287
第 10章 生成式深度学习 289
10.1 用LSTM 生成文本 290
10.1.1 下个字符预测器:一种简单的文本生成方法 290
10.1.2 基于LSTM的文本生成器示例 292
10.1.3 混沌值:调节生成文本的随机程度的阀门 296
10.2 变分自编码器:找到图像的高效、结构化表示 299
10.2.1 经典自编码器和变分自编码器:基本概念 299
10.2.2 VAE的具体示例:Fashion-MNIST数据集示例 302
10.3 用GAN生成图像 308
10.3.1 GAN背后的基本概念 309
10.3.2 ACGAN的基本组成部分 311
10.3.3 详解ACGAN的训练流程 315
10.3.4 见证针对MNIST数据集的ACGAN模型的训练和图像生成 317
10.4 延展阅读 320
10.5 练习 320
10.6 小结 321
第 11章 深度强化学习的基本原理 322
11.1 定义强化学习问题 323
11.2 策略网络和策略梯度:平衡倒立摆示例 326
11.2.1 用强化学习的框架定义平衡倒立摆问题 326
11.2.2 策略网络 328
11.2.3 训练策略网络:REINFORCE算法 331
11.3 价值网络和Q学习:《贪吃蛇》游戏示例 337
11.3.1 用强化学习的框架定义贪吃蛇问题 337
11.3.2 马尔可夫决策过程和Q值 340
11.3.3 深度Q网络 343
11.3.4 训练深度Q网络 346
11.4 延展阅读 356
11.5 练习 356
11.6 小结 358
第四部分 总结与结语
第 12章 模型的测试、优化和部署 360
12.1 测试TensorFlow.js模型 360
12.1.1 传统的单元测试 362
12.1.2 基于黄金值的测试 364
12.1.3 关于持续训练的一些思考 366
12.2 模型优化 367
12.2.1 通过训练后的权重量化优化模型体积 367
12.2.2 基于GraphModel转换的推断速度优化 373
12.3 部署TensorFlow.js模型到不同的平台和环境 378
12.3.1 部署到Web环境时的一些额外考量 378
12.3.2 部署到云环境 379
12.3.3 部署到浏览器插件(例如Chrome插件)环境 380
12.3.4 部署到基于JavaScript的移动端应用程序 382
12.3.5 部署到基于JavaScript的跨平台桌面端应用程序 383
12.3.6 部署到微信和其他基于JavaScript的移动端插件系统 385
12.3.7 部署到单片机 386
12.3.8 部署环境的总结 388
12.4 延展阅读 388
12.5 练习 388
12.6 小结 389
第 13章 总结与展望 390
13.1 回顾关键概念 390
13.1.1 AI的各种策略 390
13.1.2 深度学习从各种机器学习策略中脱颖而出的原因 391
13.1.3 如何抽象地理解深度学习 392
13.1.4 深度学习成功的关键因素 392
13.1.5 JavaScript深度学习带来的新应用和新机遇 393
13.2 回顾深度学习的流程和TensorFlow.js中的算法 394
13.2.1 监督式深度学习的通用流程 394
13.2.2 回顾TensorFlow.js中的模型类型和层类型 395
13.2.3 在TensorFlow.js中使用预训练模型 400
13.2.4 可能性空间 402
13.2.5 深度学习的局限性 404
13.3 深度学习的发展趋势 406
13.4 继续探索的一些指引 407
13.4.1 在Kaggle上练习解决实际的机器学习问题 407
13.4.2 了解arXiv上的最新进展 408
13.4.3 探索TensorFlow.js生态 408
13.5 寄语 408
附录A 安装tfjs-node-gpu及其依赖(图灵社区下载)
附录B TensorFlow.js张量及运算的简明教程(图灵社区下载)
术语表(图灵社区下载)
猜您喜欢

读书导航