目录
第1篇 Web和人工智能 1
第1章 人工智能简介和机器学习基础 3
1.1 人工智能及其类型简介 4
1.1.1 影响人工智能推进的因素 4
1.1.2 数据 5
1.1.3 算法的进步 6
1.1.4 硬件的进步 7
1.1.5 高性能计算的大众化 7
1.2 机器学习—流行的人工智能形式 7
1.3 关于深度学习 8
1.4 人工智能、机器学习和深度学习之间的关系 10
1.5 机器学习基础知识 11
1.5.1 机器学习的类型 11
1.5.2 监督学习 12
1.5.3 无监督学习 13
1.5.4 强化学习 13
1.5.5 半监督学习 14
1.6 必要的术语 14
1.6.1 训练集、测试集和验证集 14
1.6.2 偏差和方差 15
1.6.3 过拟合和欠拟合 15
1.6.4 训练误差和泛化误差 17
1.7 机器学习的标准工作流程 18
1.7.1 数据检索 18
1.7.2 数据准备 19
1.7.3 建立模型 20
1.7.4 模型对比与选择 23
1.7.5 部署和监控 23
1.8 融合AI之前和之后的Web应用 25
1.8.1 聊天机器人 25
1.8.2 Web分析 26
1.8.3 垃圾邮件过滤 27
1.8.4 搜索引擎 28
1.9 知名Web-AI企业以及它们正在做的工作 29
1.9.1 Google 30
1.9.2 Facebook 33
1.9.3 Amazon 34
1.10 小结 35
第2篇 使用深度学习进行Web开发
第2章 使用Python进行深度学习 39
2.1 揭开神经网络的神秘面纱 39
2.1.1 人工神经元 40
2.1.2 线性神经元详解 41
2.1.3 非线性神经元详解 43
2.1.4 神经网络的输入和输出层 45
2.1.5 梯度下降和反向传播 49
2.2 不同类型的神经网络 52
2.2.1 卷积神经网络 52
2.2.2 循环神经网络 58
2.3 Jupyter Notebook初探 64
2.3.1 安装Jupyter Notebook 64
2.3.2 验证安装 65
2.3.3 使用Jupyter Notebook 66
2.4 设置基于深度学习的云环境 67
2.4.1 设置AWS EC2 GPU深度学习环境 68
2.4.2 Crestle上的深度学习 72
2.4.3 其他深度学习环境 72
2.5 NumPy和Pandas初探 73
2.5.1 关于NumPy库 73
2.5.2 NumPy数组 73
2.5.3 基本的NumPy数组操作 75
2.5.4 NumPy数组与Python列表 76
2.5.5 关于Pandas 77
2.6 小结 78
第3章 创建第一个深度学习Web应用程序 79
3.1 技术要求 79
3.2 构建深度学习Web应用程序 80
3.2.1 深度学习Web应用程序规划 80
3.2.2 通用深度学习网络应用程序的结构图 80
3.3 理解数据集 81
3.3.1 手写数字的MNIST数据集 81
3.3.2 探索数据集 82
3.3.3 创建函数来读取图像文件 83
3.3.4 创建函数来读取标签文件 85
3.3.5 数据集汇总信息 85
3.4 使用Python实现一个简单的神经网络 86
3.4.1 导入必要的模块 87
3.4.2 重用函数以加载图像和标签文件 87
3.4.3 重塑数组以使用Keras进行处理 89
3.4.4 使用Keras创建神经网络 89
3.4.5 编译和训练Keras神经网络 90
3.4.6 评估和存储模型 91
3.5 创建Flask API以使用服务器端Python 92
3.5.1 设置环境 92
3.5.2 上传模型结构和权重 92
3.5.3 创建第一个Flask服务器 92
3.5.4 导入必要的模块 93
3.5.5 将数据加载到脚本运行时并设置模型 93
3.5.6 设置应用程序和index()函数 94
3.5.7 转换图像函数 94
3.5.8 预测API 95
3.6 通过cURL使用API并使用Flask创建Web客户端 96
3.6.1 通过cURL使用API 96
3.6.2 为API创建一个简单的Web客户端 97
3.7 改进深度学习后端 100
3.8 小结 100
第4章 TensorFlow.js入门 101
4.1 技术要求 101
4.2 TF.js的基础知识 102
4.2.1 关于TensorFlow 102
4.2.2 关于TF.js 102
4.2.3 TF.js出现的意义 102
4.3 TF.js的基本概念 103
4.3.1 张量 103
4.3.2 变量 104
4.3.3 操作符 104
4.3.4 模型和层 105
4.4 使用TF.js的案例研究 106
4.4.1 TF.js迷你项目的问题陈述 106
4.4.2 鸢尾花数据集 106
4.5 开发一个使用TF.js的深度学习Web应用程序 107
4.5.1 准备数据集 107
4.5.2 项目架构 107
4.5.3 启动项目 108
4.5.4 创建TF.js模型 110
4.5.5 训练TF.js模型 112
4.5.6 使用TF.js模型进行预测 113
4.5.7 创建一个简单的客户端 115
4.5.8 运行TF.js Web应用程序 117
4.6 TF.js的优点和局限性 119
4.7 小结 119
第3篇 使用不同的深度学习API进行Web开发
第5章 通过API进行深度学习 123
5.1 关于API 123
5.2 使用API的重要性 124
5.3 API与库的异同 125
5.4 一些广为人知的深度学习API 126
5.5 一些鲜为人知的深度学习API 127
5.6 选择深度学习API提供商 128
5.7 小结 129
第6章 使用Python在Google云平台上进行深度学习 131
6.1 技术要求 131
6.2 设置Google云平台账户 131
6.3 在GCP上创建第一个项目 133
6.4 在Python中使用Dialogflow API 135
6.4.1 创建Dialogflow账户 136
6.4.2 创建新代理 136
6.4.3 创建新Intent 138
6.4.4 测试代理 139
6.4.5 安装Dialogflow Python SDK 140
6.4.6 创建GCP服务账号 141
6.4.7 使用Python API调用Dialogflow代理 143
6.5 在Python中使用Cloud Vision API 146
6.5.1 使用预训练模型的重要性 147
6.5.2 设置Vision Client库 148
6.5.3 使用Python调用Cloud Vision API 149
6.6 在Python中使用Cloud Translation API 150
6.6.1 为Python设置Cloud Translate API 151
6.6.2 使用Google Cloud Translation Python库 152
6.7 小结 152
第7章 使用Python在AWS上进行深度学习 155
7.1 技术要求 155
7.2 AWS入门 156
7.3 AWS产品简介 158
7.4 boto3入门 160
7.5 配置环境变量并安装boto3 162
7.5.1 在Python中加载环境变量 162
7.5.2 创建S3存储桶 162
7.5.3 使用boto3从Python代码中访问S3 164
7.6 在Python中使用Rekognition API 165
7.6.1 Rekognition API功能介绍 165
7.6.2 使用Rekognition API的名人识别功能 166
7.6.3 通过Python代码调用Rekognition API 167
7.7 在Python中使用Alexa API 171
7.7.1 先决条件和项目框图 171
7.7.2 为Alexa技能创建配置 173
7.7.3 设置Login with Amazon服务 173
7.7.4 创建技能 175
7.7.5 配置AWS Lambda函数 176
7.7.6 创建Lambda函数 178
7.7.7 配置Alexa技能 180
7.7.8 为技能设置Amazon DynamoDB 181
7.7.9 为AWS Lambda函数部署代码 182
7.7.10 测试Lambda函数 189
7.7.11 测试AWS Home Automation技能 191
7.8 小结 192
第8章 使用Python在Microsoft Azure上进行深度学习 195
8.1 技术要求 195
8.2 设置Azure账户 196
8.3 Azure提供的深度学习服务 198
8.4 使用Face API和Python进行对象检测 200
8.4.1 初始设置 200
8.4.2 在Python代码中使用Face API 203
8.4.3 可视化识别结果 205
8.5 使用Text Analytics API和Python提取文本信息 207
8.5.1 快速试用Text Analytics API 207
8.5.2 在Python代码中使用Text Analytics API 208
8.6 关于CNTK 210
8.6.1 CNTK入门 210
8.6.2 在本地机器上安装CNTK 210
8.6.3 在Google Colaboratory上安装CNTK 211
8.6.4 创建CNTK神经网络模型 212
8.6.5 训练CNTK模型 215
8.6.6 测试和保存CNTK模型 216
8.7 Django Web开发简介 216
8.7.1 Django入门 217
8.7.2 创建一个新的Django项目 218
8.7.3 设置主页模板 218
8.8 使用来自Django项目的CNTK进行预测 223
8.8.1 设置预测路由和视图 223
8.8.2 进行必要的模块导入 224
8.8.3 使用CNTK模型加载和预测 225
8.8.4 测试Web应用程序 226
8.9 小结 227
第4篇 生产环境中的深度学习——智能Web应用程序开发
第9章 支持深度学习的网站的通用生产框架 231
9.1 技术要求 231
9.2 定义问题陈述 232
9.3 建立项目的心智模型 232
9.4 避免获得错误数据 235
9.5 关于构建AI后端的问题 237
9.5.1 期望网站的AI部分是实时的 237
9.5.2 假设来自网站的传入数据是理想的 237
9.6 端到端AI集成Web应用程序示例 238
9.6.1 数据收集和清洗 238
9.6.2 构建AI模型 239
9.6.3 导入必要的模块 239
9.6.4 读取数据集并准备清洗函数 240
9.6.5 提取需要的数据 240
9.6.6 应用文本清洗函数 241
9.6.7 将数据集拆分为训练集和测试集 241
9.6.8 聚合有关产品和用户的文本 241
9.6.9 创建用户和产品的TF-IDF向量化器 242
9.6.10 根据提供的评级创建用户和产品索引 242
9.6.11 创建矩阵分解函数 243
9.6.12 将模型保存为pickle文件 243
9.6.13 构建用户界面 244
9.6.14 创建API来响应搜索查询 244
9.6.15 创建用户界面以使用API 247
9.7 小结 248
第10章 使用深度学习系统保护Web应用程序 249
10.1 技术要求 249
10.2 reCAPTCHA的由来 250
10.3 恶意用户检测 251
10.4 基于LSTM的用户认证模型 252
10.4.1 为用户身份认证有效性检查构建模型 252
10.4.2 训练模型 256
10.4.3 托管自定义身份验证模型 257
10.5 基于Django构建使用API的应用程序 259
10.5.1 Django项目设置 259
10.5.2 在项目中创建应用程序 259
10.5.3 将应用程序链接到项目中 260
10.5.4 为网站添加路由 260
10.5.5 在BBS应用程序中创建路由处理文件 261
10.5.6 添加认证路由和配置 261
10.5.7 创建登录页面 261
10.5.8 创建注销视图 263
10.5.9 创建登录页面模板 263
10.5.10 BBS页面模板 265
10.5.11 添加到BBS页面模板 265
10.5.12 BBS模型 266
10.5.13 创建BBS视图 267
10.5.14 创建添加贴文的视图 268
10.5.15 创建管理员用户并对其进行测试 268
10.5.16 通过Python在Web应用程序中使用reCAPTCHA 269
10.6 使用Cloudflare保护网站安全 272
10.7 小结 273
第11章 自定义Web深度学习生产环境 275
11.1 技术要求 275
11.2 生产环境中的深度学习概述 276
11.2.1 Web API服务 278
11.2.2 在线学习 278
11.2.3 批量预测 278
11.2.4 自动机器学习 278
11.3 在生产环境中部署机器学习的流行工具 279
11.3.1 creme 279
11.3.2 Airflow 282
11.3.3 AutoML 284
11.4 深度学习Web生产环境示例 285
11.4.1 项目基础步骤 285
11.4.2 探索数据集 285
11.4.3 构建预测模型 286
11.4.4 实现前端 290
11.4.5 实现后端 291
11.4.6 将项目部署到Heroku上 294
11.5 安全措施、监控技术和性能优化 297
11.6 小结 298
第12章 使用深度学习API和客服聊天机器人创建端到端Web应用程序 299
12.1 技术要求 299
12.2 自然语言处理简介 300
12.2.1 语料库 300
12.2.2 词性 300
12.2.3 分词 301
12.2.4 词干提取和词形还原 301
12.2.5 词袋 302
12.2.6 相似性 302
12.3 聊天机器人简介 303
12.4 创建拥有客服代表个性的Dialogflow机器人 304
12.4.1 关于Dialogflow 304
12.4.2 步骤1—打开Dialogflow控制台 305
12.4.3 步骤2—创建新代理 306
12.4.4 步骤3—了解仪表板 306
12.4.5 步骤4—创建Intent 308
12.4.6 步骤5—创建一个webhook 313
12.4.7 步骤6—创建Firebase Cloud Functions 313
12.4.8 步骤7—为机器人添加个性 315
12.5 通过ngrok在本地主机上使用HTTPS API 316
12.6 使用Django创建测试用户界面来管理订单 318
12.6.1 步骤1—创建Django项目 318
12.6.2 步骤2—创建一个使用订单管理系统API的应用程序 319
12.6.3 步骤3—设置settings.py 319
12.6.4 步骤4—向apiui中添加路由 320
12.6.5 步骤5—在apiui应用程序中添加路由 321
12.6.6 步骤6—创建所需的视图 321
12.6.7 步骤7—创建模板 322
12.7 使用Web Speech API在网页上进行语音识别和语音合成 322
12.7.1 步骤1—创建按钮元素 323
12.7.2 步骤2—初始化Web Speech API并执行配置 324
12.7.3 步骤3—调用Dialogflow代理 325
12.7.4 步骤4—在Dialogflow Gateway上创建Dialogflow API代理 326
12.7.5 步骤5—为按钮添加click处理程序 328
12.8 小结 329
附录A Web+深度学习的成功案例和新兴领域 331
A.1 成功案例 331
A.1.1 Quora 331
A.1.2 多邻国 332
A.1.3 Spotify 333
A.1.4 Google相册 333
A.2 重点新兴领域 334
A.2.1 音频搜索 334
A.2.2 阅读理解 336
A.2.3 检测社交媒体上的假新闻 337
A.3 结语 338