第1章 人工智能极简历史 1
1.1 重要的奠基时期 2
1.1.1 神经元的研究和人工神经元模型的提出 2
1.1.2 计算机和程序的出现 3
1.1.3 图灵测试的提出 4
1.2 人工智能的诞生 4
1.3 第一个快速发展期 5
1.4 人工智能的第一个寒冬 5
1.5 人工智能研究的沉默探索与复苏 6
1.6 人工智能的第二个冬天 9
1.7 再一次腾飞 9
1.7.1 计算机综合计算能力的大幅提升 9
1.7.2 大数据的出现 11
1.7.3 神经网络研究的成熟化 11
1.8 未来展望 13
1.9 本章小结:历史指引未来 18
第2章 开发环境准备 19
2.1 安装Python 20
2.1.1 Windows操作系统下安装Python 20
2.1.2 Mac OS X操作系统下安装Python 29
2.1.3 Linux操作系统下安装Python 30
2.2 安装TensorFlow 30
2.3 打造更舒适的开发环境 32
2.3.1 修改Windows资源管理器的一些显示设置 32
2.3.2 命令提示符CMD的替代方案 34
2.3.3 文本文件编辑器 36
2.3.4 Python语言专用的开发工具 40
2.4 知识背景准备 45
2.4.1 怎样输入Python程序 45
2.4.2 怎样执行Python程序 45
2.4.3 变量 46
2.4.4 函数(方法) 50
2.4.5 对象 51
2.4.6 条件判断与分支 53
2.4.7 循环 54
2.4.8 注释 55
2.4.9 程序运行时出现错误怎么办 55
2.4.10 本章小结:一段示例代码 56
第3章 初识TensorFlow 57
3.1 三好学生成绩问题的引入 58
3.2 搭建解决三好学生成绩问题的神经网络 58
3.3 训练神经网络 62
3.4 本章小结:解决的第一个问题 68
3.5 练习 68
第4章 简化神经网络模型 69
4.1 在程序运行中查看变量取值 70
4.2 张量概念的引入 70
4.3 用向量重新组织输入数据 72
4.4 简化的神经网络模型 75
4.5 概念补充——标量、多维数组等 76
4.5.1 标量 76
4.5.2 多维数组 76
4.5.3 张量的阶和形态 77
4.6 在TensorFlow中查看和设定张量的形态 78
4.7 用softmax函数来规范可变参数 81
4.8 本章小结:线性问题 83
4.9 练习 84
第5章 用神经网络解决非线性问题 85
5.1 非线性问题的引入 86
5.1.1 三好学生评选结果问题 86
5.1.2 二分类问题:是否为三好学生 86
5.1.3 非线性问题 87
5.2 设计神经网络模型 88
5.2.1 激活函数sigmoid 88
5.2.2 使用sigmoid函数后的神经网络模型 89
5.2.3 实现本模型的代码 89
5.3 准备训练数据 90
5.3.1 随机数 90
5.3.2 产生随机训练数据 90
5.4 完整的训练代码 92
5.4.1 使用随机数据进行训练 92
5.4.2 加入偏移量b加快训练过程 94
5.5 进阶:批量生成随机训练数据 97
5.6 本章小结:非线性问题 100
5.7 练习 100
第6章 从文件中载入训练数据 101
6.1 用纯文本文件准备训练数据 102
6.1.1 数据的数字化 102
6.1.2 训练数据的格式 102
6.1.3 数据整理 103
6.1.4 使用CSV格式文件辅助处理数据 104
6.2 加载文件中的训练数据 106
6.2.1 加载函数 106
6.2.2 非数字列的舍弃 106
6.2.3 非数字列与数字列的转换 107
6.2.4 行数据的分拆及如何“喂”给训练过程 108
6.3 本章小结:读取训练数据最常用的方式 110
6.4 练习 110
第7章 多层全连接神经网络 111
7.1 身份证问题的引入 112
7.2 问题分析 112
7.3 单层网络的模型 112
7.4 多层全连接神经网络 115
7.4.1 矩阵乘法 115
7.4.2 如何用矩阵乘法实现全连接层 116
7.4.3 使用均方误差作为计算误差的方法 119
7.4.4 激活函数tanh 120
7.4.5 新的模型 121
7.5 身份证问题新模型的代码实现 121
7.6 进一步优化模型和代码 124
7.7 本章小结:多层、全连接、线性与非线性 125
7.8 练习 126
第8章 保存和载入训练过程 127
8.1 保存训练过程 128
8.2 载入保存的训练过程并继续训练 130
8.3 通过命令行参数控制是否强制重新开始训练 132
8.4 训练过程中手动保存 135
8.5 保存训练过程前征得同意 137
8.6 本章小结:善于利用保存和载入训练过程 139
8.7 练习 139
第9章 查看图形化的模型 140
9.1 数据流图的概念 141
9.2 用TensorBoard查看数据流图 141
9.3 控制TensorBoard图中对象的名称 143
9.4 本章小结:图形化的模型 145
9.5 练习 145
第10章 用训练好的模型进行预测 146
10.1 从命令行参数读取需要预测的数据 147
10.2 从文件中读取数据进行预测 149
10.3 从任意字符串中读取数据进行预测 152
10.4 本章小结:预测与训练的区别 154
10.5 练习 154
第11章 用高级工具简化建模和训练过程 155
11.1 Keras框架介绍 156
11.2 用Keras实现神经网络模型 156
11.3 用Keras进行预测 158
11.4 保存和载入Keras模型 160
11.5 本章小结:方便与灵活度的取舍 161
11.6 练习 161
第12章 在其他语言中调用TensorFlow模型 162
12.1 如何保存模型 163
12.2 在Java语言中载入TensorFlow模型并进行预测计算 165
12.3 在Go语言中载入TensorFlow模型并进行预测计算 167
12.4 本章小结:仅能预测 167
第13章 用卷积神经网络进行图像识别 169
13.1 情凭谁来定错对——一首歌引出的对错问题 170
13.2 卷积神经网络介绍 170
13.2.1 卷积神经网络的基本概念 170
13.2.2 数字图片在计算机中的表达形式 170
13.2.3 卷积层的具体计算过程 172
13.2.4 卷积层的原理和优点 174
13.2.5 卷积神经网络的典型结构 177
13.3 用卷积网络实现图像识别 177
13.3.1 钩叉问题的图像数据格式 177
13.3.2 准备钩叉问题的训练数据 178
13.3.3 设计钩叉问题的神经网络模型并实现 179
13.4 本章小结:进一步优化的方向 183
13.5 练习 183
第14章 循环神经网络初探 184
14.1 循环神经网络简介 185
14.2 长短期记忆模型LSTM的作用 186
14.3 汇率预测问题的引入 186
14.4 用于汇率预测的LSTM神经网络模型 187
14.5 实现汇率预测LSTM网络的代码 188
14.6 用循环神经网络来进行自然语言处理 193
14.7 本章小结:时序有关问题 195
14.8 练习 195
第15章 优化器的选择与设置 196
15.1 优化器的作用 197
15.2 梯度下降算法 197
15.3 学习率的影响 198
15.4 主流优化方法介绍 199
15.5 优化器效率对比 200
15.6 本章小结:渡河之筏 203
第16章 下一步学习方向指南 204
16.1 更多的激活函数 205
16.2 更多的隐藏层类型 205
16.3 确定最适合的神经网络类型 206
16.4 GPU版本 206
16.5 有监督学习与无监督学习 207
16.6 深度学习进阶 207
16.7 升级到最新的TensorFlow版本 207
16.8 本章小结:最后的实例 208
展开