第1章 概述 1
1.1 人工智能 1
1.1.1 什么是人工智能 1
1.1.2 人工智能的发展历史 1
1.1.3 人工智能的主要方法 4
1.2 智能计算系统 8
1.2.1 什么是智能计算系统 8
1.2.2 为什么需要智能计算系统 8
1.2.3 智能计算系统的发展 8
1.3 驱动范例 11
1.4 本章小结 13
习题 13
第2章 神经网络基础 14
2.1 从机器学习到神经网络 14
2.1.1 基本概念 14
2.1.2 线性回归 15
2.1.3 感知机 17
2.1.4 两层神经网络——多层感知机 19
2.1.5 深度学习(深层神经网络) 20
2.1.6 神经网络发展历程 21
2.2 神经网络训练 23
2.2.1 正向传播 24
2.2.2 反向传播 25
2.3 神经网络设计原则 27
2.3.1 网络的拓扑结构 27
2.3.2 激活函数 27
2.3.3 损失函数 30
2.4 过拟合与正则化 32
2.4.1 过拟合 33
2.4.2 正则化 34
2.5 交叉验证 37
2.6 本章小结 39
习题 39
第3章 深度学习 41
3.1 适合图像处理的卷积神经网络 41
3.1.1 卷积神经网络的组成 42
3.1.2 卷积层 43
3.1.3 池化层 48
3.1.4 全连接层 49
3.1.5 softmax层 50
3.1.6 卷积神经网络总体结构 50
3.2 基于卷积神经网络的图像分类算法 52
3.2.1 AlexNet 53
3.2.2 VGG 56
3.2.3 Inception 59
3.2.4 ResNet 66
3.3 基于卷积神经网络的图像目标检测算法 69
3.3.1 评价指标 69
3.3.2 R-CNN系列 72
3.3.3 YOLO 78
3.3.4 SSD 81
3.3.5 小结 83
3.4 序列模型:循环神经网络 83
3.4.1 RNN 84
3.4.2 LSTM 88
3.4.3 GRU 89
3.4.4 小结 90
3.5 生成对抗网络 91
3.5.1 模型组成 91
3.5.2 GAN训练 92
3.5.3 GAN结构 94
3.6 驱动范例 96
3.6.1 基于卷积神经网络的图像风格迁移算法 96
3.6.2 实时图像风格迁移算法 98
3.7 本章小结 100
习题 100
第4章 编程框架使用 101
4.1 为什么需要编程框架 101
4.2 编程框架概述 102
4.2.1 通用编程框架概述 102
4.2.2 TensorFlow概述 102
4.3 TensorFlow编程模型及基本用法 103
4.3.1 计算图 104
4.3.2 操作 105
4.3.3 张量 106
4.3.4 会话 110
4.3.5 变量 114
4.3.6 占位符 116
4.3.7 队列 117
4.4 基于TensorFlow实现深度学习预测 117
4.4.1 读取输入样本 118
4.4.2 定义基本运算单元 118
4.4.3 创建神经网络模型 122
4.4.4 计算神经网络模型输出 123
4.5 基于TensorFlow实现深度学习训练 123
4.5.1 加载数据 123
4.5.2 模型训练 129
4.5.3 模型保存 135
4.5.4 图像风格迁移训练的实现 137
4.6 本章小结 139
习题 139
第5章 编程框架机理 141
5.1 TensorFlow设计原则 141
5.1.1 高性能 141
5.1.2 易开发 142
5.1.3 可移植 142
5.2 TensorFlow计算图机制 142
5.2.1 一切都是计算图 143
5.2.2 计算图本地执行 150
5.2.3 计算图分布式执行 154
5.3 TensorFlow系统实现 155
5.3.1 整体架构 155
5.3.2 计算图执行模块 156
5.3.3 设备抽象和管理 161
5.3.4 网络和通信 162
5.3.5 算子实现 167
5.4 编程框架对比 169
5.4.1 TensorFlow 170
5.4.2 PyTorch 171
5.4.3 MXNet 171
5.4.4 Caffe 172
5.5 本章小结 172
习题 172
第6章 深度学习处理器原理 174
6.1 深度学习处理器概述 174
6.1.1 深度学习处理器的意义 174
6.1.2 深度学习处理器的发展历史 175
6.1.3 设计思路 177
6.2 目标算法分析 178
6.2.1 计算特征 178
6.2.2 访存特征 181
6.3 深度学习处理器DLP结构 186
6.3.1 指令集 186
6.3.2 流水线 190
6.3.3 运算部件 190
6.3.4 访存部件 193
6.3.5 算法到芯片的映射 194
6.3.6 小结 195
6.4 优化设计 195
6.4.1 基于标量MAC的运算部件 195
6.4.2 稀疏化 198
6.4.3 低位宽 199
6.5 性能评价 201
6.5.1 性能指标 201
6.5.2 测试基准程序 202
6.5.3 影响性能的因素 203
6.6 其他加速器 203
6.6.1 GPU架构简述 204
6.6.2 FPGA架构简述 204
6.6.3 DLP与GPU、FPGA的对比 205
6.7 本章小结 206
习题 206
第7章 深度学习处理器架构 207
7.1 单核深度学习处理器 207
7.1.1 总体架构 208
7.1.2 控制模块 209
7.1.3 运算模块 212
7.1.4 存储单元 215
7.1.5 小结 215
7.2 多核深度学习处理器 216
7.2.1 总体架构 216
7.2.2 Cluster架构 217
7.2.3 互联架构 223
7.2.4 小结 224
7.3 本章小结 225
习题 225
第8章 智能编程语言 227
8.1 为什么需要智能编程语言 227
8.1.1 语义鸿沟 228
8.1.2 硬件鸿沟 230
8.1.3 平台鸿沟 232
8.1.4 小结 233
8.2 智能计算系统抽象架构 234
8.2.1 抽象硬件架构 234
8.2.2 典型智能计算系统 235
8.2.3 控制模型 236
8.2.4 计算模型 236
8.2.5 存储模型 237
8.3 智能编程模型 238
8.3.1 异构编程模型 239
8.3.2 通用智能编程模型 242
8.4 智能编程语言基础 247
8.4.1 语法概述 247
8.4.2 数据类型 248
8.4.3 宏、常量与内置变量 250
8.4.4 I/O操作语句 250
8.4.5 标量计算语句 252
8.4.6 张量计算语句 252
8.4.7 控制流语句 252
8.4.8 串行程序示例 253
8.4.9 并行程序示例 254
8.5 智能应用编程接口 255
8.5.1 Kernel函数接口 255
8.5.2 运行时接口 257
8.5.3 使用示例 259
8.6 智能应用功能调试 262
8.6.1 功能调试方法 262
8.6.2 功能调试接口 266
8.6.3 功能调试工具 269
8.6.4 精度调试方法 272
8.6.5 功能调试实践 272
8.7 智能应用性能调优 280
8.7.1 性能调优方法 280
8.7.2 性能调优接口 282
8.7.3 性能调优工具 286
8.7.4 性能调优实践 287
8.8 基于智能编程语言的系统开发 294
8.8.1 高性能库算子开发 294
8.8.2 编程框架算子开发 300
8.8.3 系统开发与优化实践 304
习题 321
第9章 实验 323
9.1 基础实验:图像风格迁移 323
9.1.1 基于智能编程语言的算子实现 323
9.1.2 图像风格迁移的实现 326
9.1.3 风格迁移实验的操作步骤 330
9.2 拓展实验:物体检测 333
9.2.1 基于智能编程语言的算子实现 333
9.2.2 物体检测的实现 337
9.3 拓展练习 337
附录A 计算机体系结构基础 340
附录B 实验环境说明 345
参考文献 348
后记 356