第 1章 人工智能概述 1
1.1 感受人工智能时代的到来 1
1.1.1 人机博弈 1
1.1.2 宇宙探索 2
1.1.3 人机对话 2
1.1.4 计算机视觉 2
1.1.5 自然语言处理和大语言模型 3
1.1.6 医疗人工智能 4
1.1.7 智能交通 5
1.1.8 机器人 5
1.2 人工智能发展概述 6
1.2.1 人工智能起源 6
1.2.2 人工智能与图灵测试 7
1.2.3 人工智能发展史 8
1.3 机器学习 9
1.3.1 人工智能、机器学习与深度学习 9
1.3.2 什么是机器学习 9
1.3.3 机器学习典型求解问题类型 10
1.4 深度学习 11
1.4.1 神经元 12
1.4.2 神经网络 14
1.4.3 深度神经网络 15
1.4.4 卷积神经网络 15
1.4.5 深度学习的发展历程 16
1.5 深度学习框架 17
1.5.1 MindSpore 18
1.5.2 PyTorch 19
1.5.3 TensorFlow 20
练习与思考 20
第 2章 MindSpore的安装与基础知识 21
2.1 MindSpore的安装 21
2.2 MindSpore基础——张量 23
2.2.1 张量的创建 23
2.2.2 张量的属性 24
2.2.3 张量的索引 25
2.2.4 张量的运算 25
2.2.5 张量与NumPy的转换 26
练习与思考 26
第3章 线性回归问题:MindSpore开发基础 27
3.1 单变量线性回归案例 27
3.2 监督学习的基本术语 28
3.2.1 特征和标签 28
3.2.2 样本和模型 28
3.2.3 训练(学习) 28
3.2.4 损失 28
3.3 监督学习模型训练的过程与原理 29
3.3.1 监督学习模型的训练过程 29
3.3.2 定义损失函数 30
3.3.3 降低损失与优化 31
3.3.4 超参数 31
3.4 自动微分和优化器 31
3.4.1 牛顿法 31
3.4.2 GD算法 32
3.4.3 SGD算法 32
3.4.4 动量算法 32
3.4.5 Adam算法 33
3.5 单变量线性回归的MindSpore实战 33
3.5.1 导入库与定义可视化函数 33
3.5.2 构建模型 34
3.5.3 训练模型 35
3.5.4 应用模型 36
练习与思考 37
第4章 波士顿房价预测:多元线性回归问题的建模 38
4.1 波士顿房价预测问题简介 38
4.2 数据集的拆分 39
4.2.1 预防过拟合 39
4.2.2 数据集拆分:训练集与测试集 39
4.3 多元线性回归模型 40
4.4 波士顿房价预测问题的建模 41
4.4.1 导入库与准备数据 41
4.4.2 构建模型 43
4.4.3 训练模型 44
4.4.4 应用模型 46
练习与思考 47
第5章 MNIST手写数字识别:全连接神经网络的建模 48
5.1 多层全连接神经网络 48
5.1.1 多层全连接神经网络的定义 48
5.1.2 多层全连接神经网络的计算方式 50
5.2 MNIST手写数字识别的全连接神经网络建模 52
5.2.1 单隐藏层全连接神经网络的建模 52
5.2.2 多层全连接神经网络的建模 57
练习与思考 58
第6章 CIFAR-10图像识别问题:卷积神经网络与应用 59
6.1 案例介绍 59
6.2 从神经网络到卷积神经网络 60
6.2.1 全连接网络的局限性 60
6.2.2 卷积神经网络的应用 61
6.3 卷积神经网络的基本知识 62
6.3.1 卷积神经网络基本结构 62
6.3.2 卷积运算 63
6.3.3 池化操作 68
6.3.4 卷积步长 70
6.3.5 卷积神经网络的工作过程 70
6.3.6 进一步理解卷积 71
6.3.7 经典卷积神经网络 73
6.4 MindSpore对卷积神经网络的支持 74
6.4.1 MindSpore的卷积操作 74
6.4.2 MindSpore的池化操作 75
6.4.3 MindSpore对经典模型的支持 76
6.5 CIFAR-10图像识别案例的MindSpore实现 77
6.5.1 CIFAR-10数据集下载 77
6.5.2 模型构建与训练实践 78
6.5.3 模型保存与加载 81
练习与思考 84
第7章 卷积神经网络进阶:图像语义分割 85
7.1 ISIC2016皮肤病分割案例介绍 85
7.2 从图像分类到语义分割 86
7.3 UNet语义分割原理 86
7.3.1 UNet网络结构 86
7.3.2 分割损失函数 87
7.3.3 模型性能评价指标 88
7.4 ISIC2016皮肤病分割案例实践 88
7.4.1 数据集的下载与封装 88
7.4.2 UNet网络结构代码实现 91
7.4.3 UNet训练过程代码实现 93
7.4.4 UNet性能评估代码实现 95
练习与思考 97
第8章 猫狗大战:迁移学习及应用 98
8.1 猫狗大战案例简介 98
8.2 MindSpore.Dataset 模块 98
8.2.1 MindRecord数据格式 98
8.2.2 将JSON文件和图像转化成MindRecord数据格式 100
8.2.3 自定义数据集 101
8.3 猫狗大战数据集制作 102
8.3.1 按标签类别重组文件存放 102
8.3.2 读取图像和标签信息 102
8.3.3 猫狗大战数据集的建立与探索 105
8.4 迁移学习简介 106
8.5 基于VGG-16的自定义迁移学习模型构建 107
8.5.1 VGG-16模型简介 107
8.5.2 构建模型 108
8.5.3 训练模型 110
8.5.4 模型保存 114
8.5.5 进行预测 114
练习与思考 115
第9章 自然语言处理:循环神经网络应用实践. 116
9.1 循环神经网络 116
9.1.1 数据的时序与含义 116
9.1.2 循环神经网络的基本结构和局限性 116
9.1.3 LSTM网络 117
9.1.4 GRU 119
9.2 自然语言处理的基础知识 120
9.2.1 分词技术 120
9.2.2 词表示技术 123
9.3 LSTM文本分类:电影评论情感分析 . 126
9.3.1 IMDb数据集获取 126
9.3.2 加载IMDb数据集 128
9.3.3 加载预训练词向量 129
9.3.4 数据集预处理 131
9.3.5 模型构建、训练和评估 132
9.4 LSTM+CRF序列标注:中文命名实体识别 137
9.4.1 序列标注任务 137
9.4.2 条件随机场 137
9.4.3 BiLSTM+CRF模型 143
练习与思考 146
第 10章 强化学习及应用 147
10.1 《月球着陆》游戏 147
10.2 强化学习的基础知识 148
10.2.1 强化学习的基本概念 148
10.2.2 强化学习的学习过程 148
10.2.3 深度强化学习与DQN算法 154
10.3 《月球着陆》游戏MindSpore实践 155
10.3.1 模型构建 156
10.3.2 经验回放实现 157
10.3.3 模型训练 158
10.3.4 结果展示 161
练习与思考 162
第 11章 菜品识别:Web应用 163
11.1 菜品识别深度学习模型 163
11.1.1 菜品识别数据集获取 163
11.1.2 菜品识别模型训练 165
11.1.3 菜品识别模型测试与评估 168
11.2 菜品识别API 169
11.2.1 RESTful API基本介绍 169
11.2.2 Flask开发环境配置 170
11.2.3 菜品识别API构建 170
11.2.4 菜品识别API部署 171
11.2.5 菜品识别API curl测试 172
11.3 菜品识别Web应用 173
11.3.1 Web应用构建 173
11.3.2 Web应用测试 178
11.3.3 菜品识别Web应用的扩展 180
练习与思考 181
第 12章 花卉识别App:MindSpore Lite及应用 182
12.1 MindSpore Lite 的基础知识 182
12.1.1 MindSpore Lite 的基本组成 182
12.1.2 MindSpore Lite 的优势 184
12.2 MindSpore Lite 模型部署和应用 184
12.2.1 模型选择 185
12.2.2 模型转换 185
12.2.3 模型部署与应用 186
12.3 花卉识别模型构建、训练与MindSpore Lite导出 186
12.3.1 构建花卉识别模型 186
12.3.2 训练花卉识别模型 194
12.3.3 MindSpore Lite 格式模型文件导出 196
12.4 Android App开发 196
12.4.1 获取花卉识别App工程文件 196
12.4.2 安装Android开发环境 198
12.4.3 打开Example中的App工程 198
12.4.4 加入MindSpore Lite模型文件 199
12.4.5 填充代码框架 199
12.4.6 测试和运行App 203
练习与思考 207
参考文献 208