JavaScript深度学习

JavaScript深度学习

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

编辑推荐

深度学习扛鼎之作《Python深度学习》姊妹篇,前端工程师不可错过的AI入门书。

内容简介

本书将了解JavaScript与深度学习结合的独特优势,掌握客户端预测与分析、图像识别、监督学习、迁移学习、强化学习等核心概念,并动手在浏览器中实现计算机视觉和音频处理以及自然语言处理,构建并训练神经网络,利用客户端数据优化机器学习模型,开发基于浏览器的交互式游戏,同时为深度学习探索新的应用空间。

作者简介

作者蔡善清,谷歌公司软件工程师,深度参与了TensorFlow和TensorFlow.js的开发工作。从清华大学毕业后,他前往约翰斯·霍普金斯大学和麻省理工学院深造,并取得了麻省理工学院博士学位。

章节目录

版权信息

内容提要

本书结构

中文版推荐序

前言

关于本书

致谢

关于作者

关于封面

第一部分 动机和基本概念

第1章 深度学习和JavaScript

1.1 人工智能、机器学习、神经网络和深度学习

1.1.1 人工智能

1.1.2 机器学习:它和传统编程有何不同

1.1.3 神经网络和深度学习

1.1.4 进行深度学习的必要性

1.2 为何要结合JavaScript和机器学习

1.2.1 用Node.js进行深度学习

1.2.2 JavaScript生态系统

1.3 为何选用TensorFlow.js

1.3.1 TensorFlow、Keras和TensorFlow.js的前世今生

1.3.2 为何选用TensorFlow.js

1.3.3 TensorFlow.js在全球的应用情况

1.3.4 本书中的TensorFlow.js知识

1.4 练习

1.5 小结

第二部分 深入浅出TensorFlow.js

第2章 TensorFlow.js入门:从简单的线性回归开始

2.1 示例1:用TensorFlow.js预测下载任务所需时间

2.1.1 项目概览:预测下载任务所需时间

2.1.2 关于代码清单和控制台交互的注意事项

2.1.3 创建和格式化数据

2.1.4 定义简单的模型

2.1.5 使模型拟合训练集

2.1.6 用经过训练的模型进行预测

2.1.7 示例1小结

2.2 model.fit()内部原理剖析:示例1中的梯度下降算法

2.2.1 直观理解梯度下降算法优化

2.2.2 探索梯度下降算法的内部原理:反向传播算法

2.3 示例2:涉及多个输入特征的线性回归

2.3.1 波士顿房价数据集

2.3.2 从GitHub获取并运行波士顿房价预测项目

2.3.3 读取波士顿房价数据

2.3.4 准确定义波士顿房价问题

2.3.5 线性回归前的准备工作:数据标准化

2.3.6 对波士顿房价数据集进行线性回归

2.4 如何理解模型

2.4.1 解释习得的权重

2.4.2 获取模型内部权重

2.4.3 关于可解释性的注意事项

2.5 练习

2.6 小结

第3章 添加非线性:升级加权和

3.1 非线性的定义及其优势

3.1.1 直观地理解神经网络中的非线性

3.1.2 超参数与超参数优化

3.2 输出端的非线性:分类任务的模型

3.2.1 二分类定义

3.2.2 度量二分类器的性能:准确率、精确率、召回率

3.2.3 ROC曲线:展示二分类问题中的取舍关系

3.2.4 二元交叉熵:二分类问题的损失函数

3.3 多分类问题

3.3.1 对分类数据进行one-hot编码

3.3.2 归一化指数函数:softmax函数

3.3.3 分类交叉熵:多分类问题的损失函数

3.3.4 混淆矩阵:更细粒度地分析多分类问题

3.4 练习

3.5 小结

第4章 用convnet识别图像和音频

4.1 从向量到张量:图像数据的表示方法

4.2 你的第一个convnet

4.2.1 conv2d层

4.2.2 maxPooling2d层

4.2.3 重复出现的卷积层加池化层组合模式

4.2.4 扁平化密集层

4.2.5 训练convnet

4.2.6 用convnet做预测

4.3 告别浏览器:用Node.js更快地训练模型

4.3.1 安装使用tfjs-node所需的依赖和模块

4.3.2 在浏览器中加载Node.js中保存的模型

4.4 口语单词识别:对音频数据使用convnet

4.5 练习

4.6 小结

第5章 迁移学习:复用预训练的神经网络

5.1 迁移学习简介:复用预训练模型

5.1.1 基于兼容的输出形状进行迁移学习:固化层

5.1.2 对不兼容的输出形状进行迁移学习:用基模型的输出创建新模型

5.1.3 用微调最大化迁移学习的收益:音频示例

5.2 通过对convnet进行迁移学习实现目标检测

5.2.1 基于合成场景的简单目标识别问题

5.2.2 深入了解如何实现简单的目标检测

5.3 练习

5.4 小结

第三部分 TensorFlow.js高级深度学习

第6章 处理数据

6.1 用tf.data管理数据

6.1.1 tf.data.Dataset对象

6.1.2 创建tf.data.Dataset对象

6.1.3 读取数据集对象中的数据

6.1.4 操作tfjs-data数据集

6.2 用model.fitDataset训练模型

6.3 获取数据的常见模式

6.3.1 处理CSV格式的数据

6.3.2 用tf.data.webcam()获取视频数据

6.3.3 用tf.data.microphone()获取音频数据

6.4 处理有缺陷的数据

6.4.1 数据理论

6.4.2 检测并清洗数据中的缺陷

6.5 数据增强

6.6 练习

6.7 小结

第7章 可视化数据和模型

7.1 数据可视化

7.1.1 用tfjs-vis模块可视化数据

7.1.2 综合性案例研究:用tfjs-vis模块可视化气象数据

7.2 可视化训练后的模型

7.2.1 可视化convnet内部激活函数的输出

7.2.2 找到卷积层的敏感点:最大化激活函数输出的输入图像

7.2.3 可视化和解读convnet的分类结果

7.3 延展阅读和补充资料

7.4 练习

7.5 小结

第8章 欠拟合、过拟合,以及机器学习的通用流程

8.1 定义气温预测问题

8.2 欠拟合、过拟合,以及应对措施

8.2.1 欠拟合

8.2.2 过拟合

8.2.3 用权重正则化应对过拟合并可视化其成效

8.3 机器学习的通用流程

8.4 练习

8.5 小结

第9章 针对序列和文本的深度学习

9.1 用RNN对气温预测问题进行第二次尝试

9.1.1 为何密集层无法为序列中的顺序信息建模

9.1.2 RNN层如何为序列中的顺序建模

9.2 构建针对文本的深度学习模型

9.2.1 文本在机器学习中的表示方法:one-hot编码和multi-hot编码

9.2.2 对情感分析问题的第一次尝试

9.2.3 一种更高效的文本表示:词嵌入

9.2.4 1D convnet

9.3 采用注意力机制的序列到序列任务

9.3.1 定义序列到序列任务

9.3.2 编码器-解码器架构和注意力机制

9.3.3 详解基于注意力机制的编码器-解码器模型

9.4 延展阅读

9.5 练习

9.6 小结

第10章 生成式深度学习

10.1 用LSTM生成文本

10.1.1 下个字符预测器:一种简单的文本生成方法

10.1.2 基于LSTM的文本生成器示例

10.1.3 混沌值:调节生成文本的随机程度的阀门

10.2 变分自编码器:找到图像的高效、结构化表示

10.2.1 经典自编码器和变分自编码器:基本概念

10.2.2 VAE的具体示例:Fashion-MNIST数据集示例

10.3 用GAN生成图像

10.3.1 GAN背后的基本概念

10.3.2 ACGAN的基本组成部分

10.3.3 详解ACGAN的训练流程

10.3.4 见证针对MNIST数据集的ACGAN模型的训练和图像生成

10.4 延展阅读

10.5 练习

10.6 小结

第11章 深度强化学习的基本原理

11.1 定义强化学习问题

11.2 策略网络和策略梯度:平衡倒立摆示例

11.2.1 用强化学习的框架定义平衡倒立摆问题

11.2.2 策略网络

11.2.3 训练策略网络:REINFORCE算法

11.3 价值网络和Q学习:《贪吃蛇》游戏示例

11.3.1 用强化学习的框架定义贪吃蛇问题

11.3.2 马尔可夫决策过程和Q值

11.3.3 深度Q网络

11.3.4 训练深度Q网络

11.4 延展阅读

11.5 练习

11.6 小结

第四部分 总结与结语

第12章 模型的测试、优化和部署

12.1 测试TensorFlow.js模型

12.1.1 传统的单元测试

12.1.2 基于黄金值的测试

12.1.3 关于持续训练的一些思考

12.2 模型优化

12.2.1 通过训练后的权重量化优化模型体积

12.2.2 基于GraphModel转换的推断速度优化

12.3 部署TensorFlow.js模型到不同的平台和环境

12.3.1 部署到Web环境时的一些额外考量

12.3.2 部署到云环境

12.3.3 部署到浏览器插件(例如Chrome插件)环境

12.3.4 部署到基于JavaScript的移动端应用程序

12.3.5 部署到基于JavaScript的跨平台桌面端应用程序

12.3.6 部署到微信和其他基于JavaScript的移动端插件系统

12.3.7 部署到单片机

12.3.8 部署环境的总结

12.4 延展阅读

12.5 练习

12.6 小结

第13章 总结与展望

13.1 回顾关键概念

13.1.1 AI的各种策略

13.1.2 深度学习从各种机器学习策略中脱颖而出的原因

13.1.3 如何抽象地理解深度学习

13.1.4 深度学习成功的关键因素

13.1.5 JavaScript深度学习带来的新应用和新机遇

13.2 回顾深度学习的流程和TensorFlow.js中的算法

13.2.1 监督式深度学习的通用流程

13.2.2 回顾TensorFlow.js中的模型类型和层类型

13.2.3 在TensorFlow.js中使用预训练模型

13.2.4 可能性空间

13.2.5 深度学习的局限性

13.3 深度学习的发展趋势

13.4 继续探索的一些指引

13.4.1 在Kaggle上练习解决实际的机器学习问题

13.4.2 了解arXiv上的最新进展

13.4.3 探索TensorFlow.js生态

13.5 寄语

附录A 安装tfjs-node-gpu及其依赖

A.1 在Linux上安装tfjs-node-gpu

A.2 在Windows上安装tfjs-node-gpu

附录B TensorFlow.js张量及运算的简明教程

B.1 张量的创建以及张量轴的使用规范

B.1.1 标量(零阶张量)

B.1.2 tensor1d(一阶张量)

B.1.3 tensor2d(二阶张量)

B.1.4 三阶以及更高阶的张量

B.1.5 数据批次的概念

B.1.6 张量的实际应用

B.1.7 从张量缓冲区创建张量

B.1.8 创建全0和全1张量

B.1.9 创建随机值张量

B.2 基础张量运算

B.2.1 一元运算

B.2.2 二元运算

B.2.3 张量的拼接与拆分

B.3 TensorFlow.js中的内存管理:tf.dispose()和tf.tidy()

B.4 计算梯度

B.5 练习

术语表

JavaScript深度学习是2021年由人民邮电出版社出版,作者尼尔森。

得书感谢您对《JavaScript深度学习》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。