1、 未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 从 AI 模型到智能机器人:基于 Python 与 TensorFlow/高焕堂著.北京:电子工业出版社,2019.9 ISBN 978-7-121-37011-3 .从 .高 .软件工具程序设计人工智能算法 .TP311.561 TP18 中国版本图书馆 CIP 数据核字(2019)第 132325 号 责任编辑:刘 伟 印 刷:北京季蜂印刷有限公司 装 订:北京季蜂印刷有限公司 出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编:100036 开 本:7201000 1/
2、16 印张:18.5 字数:326 千字 版 次:2019 年 9 月第 1 版 印 次:2019 年 9 月第 1 次印刷 定 价:79.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:(010)51260888-819,。前 言 随着 AI(Artificial Intelligence,人工智能)技术及应用环境的不断革新,其应用范围也随之扩大。Python 以其独特的兼容性,成为最受欢迎的编程语言之一,同时,也成
3、为众多编程爱好者入门的首选语言。Python 开发者要具备面向对象(Object-Oriented)的思维和 AI 基础,这是非常有必要的。写作初衷与图书特色 本书由中国台湾(下称台湾)知名的 IT 人士高焕堂先生所著。高先生在进行 AI 技术培训的过程中,发现很多用户对利用 Python 和TensorFlow 平台进行 AI 开发并不熟练,这其中包括华为、百度、腾讯(成都)等国内知名科技公司的部分高级设计师和架构师。因此,他在授课答疑后,根据大多数初级、中级用户的学习水平,倾注心血来编写此书,为大多数未能现场听讲的读者普及 AI 技术知识。本书主要特色如下。理论完备:讲解了从 AI 思维简
4、史到 Python、TensorFlow 平台的开发流程与应用,如利用 Python 编写 AI 机器人进行机器学习训练、利用TensorFlow 进行更深度的机器学习训练,以及利用神经网络训练模型提高图片识别率等内容,全书内容详尽,理论完备。浅显易懂:以 AI 基础技术理论为框架,以生活中常见的案例和浅显易懂的语言来讲解,在逐一细化程序编写方法的同时,力求可操作性,便于入门读者快速上手。从 AI 模型到智能机器人:基于 Python 与 TensorFlow IV 本书主要内容 第 19 章从 OOP+Python 应用出发,由浅入深,循序渐进,帮助用户建立扎实的 AI 软件开发的技术根基。
5、第 1012 章以 AI 技术简史为起点,以机器学习为范例,说明如何用 Python 来撰写简单的 AI 模型(如 Perceptron 模型),并通过实际训练,让用户了解机器学习的原理,以及如何使用 Python 程序进行调试。第 1315 章以 TensorFlow 平台为例,说明如何利用该平台来设计 NN(神经网络)模型,熟悉其训练及应用过程。最后,将用户在 TensorFlow 环境下训练好的 AI 模型,移植到 Android 手机、机器人(如华硕 Zenbo)或树莓派(RPi)上,大大提升终端设备的智能性,从而创造更大的商机。希望本书能陪伴你驰骋于 Python 和 TensorF
6、low 技术领域之中,使你在未来的道路上大展宏图。作者简介 高焕堂,拥有 40 多年软件设计经验,专注于 AI 和 VR 技术与创客辅导,在 AI、Docker 容器技术、Android 终端平台等领域都有深入的研究。由于其对台湾软件架构设计领域的卓越贡献,曾被誉为“台湾软件架构设计大师”。现任台湾铭传大学“AI 创新&设计思维”课程的指导教授,大连艺术学院创新创业导师、厦门 VR/AR 协会创业导师兼荣誉会长。编者 2019 年 8 月 目 录 第 1 章 AI 与面向对象 Python 1 1.1 AI 思维简史 2 1.2 Python 语言与 AI 2 1.3 布置 Python 开发
7、环境 3 1.4 开始编写 Python 程序 6 1.5 面向对象(Object-Oriented)入门 10 1.5.1 对象(Object)10 1.5.2 消息(Message)10 1.5.3 事件(Event)10 1.6 软件中的对象(Object)11 1.6.1 抽象的目的 11 1.6.2 抽象表示 12 1.6.3 数据和函数 12 1.6.4 历史的足迹 12 1.7 对象与变量(Variable)13 1.7.1 数据类型 13 1.7.2 变量即对象 14 1.8 对象与函数(Function)17 1.8.1 函数的角色 17 1.8.2 事件驱动观念 18 1.
8、9 自然界的分类 19 1.9.1 分类与抽象 19 1.9.2 对象与类 19 从 AI 模型到智能机器人:基于 Python 与 TensorFlow VI 1.9.3 类的体系 20 1.10 软件的分类 21 1.10.1 类是数据类型 21 1.10.2 类的用途:描述对象的属性与行为 22 第 2 章 Python 的对象与类 24 2.1 OOP 入门 25 2.2 对象的概念 25 2.3 对象分类与组合 27 2.3.1 类的永恒性 27 2.3.2 将对象分门别类 27 2.3.3 对象的组合关系 28 2.4 AKO 抽象关系 30 2.5 对象行为与接口 36 2.5.
9、1 接口入门 36 2.5.2 消息传递与对象行为 37 2.5.3 对象的运算行为 38 第 3 章 善用类 46 3.1 如何描述对象:善用类 47 3.2 如何创建软件对象 48 3.3 对象参考 49 3.4 构造函数 52 3.5 子类如何创建对象 54 第 4 章 对象的组合 58 4.1 认识 self 参考 59 4.2 建立对象的包含关系 60 4.3 self 参考值的妙用 64 4.4 包容多样化物件 71 4.5 集合对象 73 第 5 章 类的封装性 76 5.1 对象的封装性 77 5.2 类:创造对象的封装性 77 目 录 VII 5.3 类的私有属性与函数 81
10、 5.4 类级别的属性 89 5.5 类级别的函数 93 第 6 章 类的继承体系 96 6.1 继承的意义 97 6.2 建立类继承体系 98 6.3 函数覆写的意义 108 第 7 章 活用抽象类 111 7.1 抽象类与继承体系 112 7.2 Python 抽象类的表示法 112 7.2.1 一般具象类 112 7.2.2 抽象类 114 7.3 从“抽象类”衍生“具象类”115 7.4 抽象类的妙用:默认行为 118 7.4.1 Python 默认行为的表示法 118 7.4.2 默认行为的意义 120 7.5 默认函数的妙用:反向调用 120 第 8 章 发挥“多态性”127 8.
11、1“多态性”的意义 128 8.1.1 自然界的多态性 128 8.1.2 多态性物体 129 8.2 多态函数 130 8.3 可覆写函数 132 第 9 章 如何设计抽象类 138 9.1 抽象:抽出共同的现象 139 9.2 抽象的步骤 141 9.2.1 Step 1:抽出名称、引数及内容都一致的函数 147 9.2.2 Step 2:抽出名称相同、参数及内容有差异的函数 149 9.3 洞悉“变”与“不变”152 9.4 着手设计抽象类 154 从 AI 模型到智能机器人:基于 Python 与 TensorFlow VIII 第 10 章 接口与抽象类 160 10.1 接口的意义
12、 161 10.2 以 Python 抽象类来实现接口 162 10.3 接口设计实例一:并联电池对象 167 10.3.1 不理解原理但也能用 167 10.3.2 实现步骤 169 10.4 接口设计实例二:串联电池对象 172 10.4.1 基本设计 172 10.4.2 实现步骤 173 10.4.3 总结 176 10.5 接口设计实例三:Chain Of Responsibility 设计模式 177 第 11 章 不插电学 AI 183 11.1“不插电学 AI”的意义 184 11.2 AlphaGo 的惊人学习能力 184 11.3 范例:一只老鼠的探索及学习 184 11.
13、4 记录老鼠的探索选择及结果 186 11.5 老鼠当教练:训练 AI 机器人 188 11.5.1 以简单算数,让机器人表达智能 188 11.5.2 机器人智能的提升过程 189 11.5.3 一回生、两回熟 191 11.5.4 三回变高手 192 11.5.5 第四回合训练:迈向完美 194 11.5.6 重新检测一次 195 第 12 章 撰写单层 Perceptron 程序 198 12.1 开始“插电学 AI”:使用 Python 199 12.2 展开第#0 组数据的训练 200 12.3 进行更多组数据的训练 202 12.4 加入学习率 206 12.5 增添一个 Trai
14、ning 类 209 12.6 一个更详细的 Perceptron 代码 213 目 录 IX 第 13 章 使用 TensorFlow 编程 225 13.1 TensorFlow 入门 226 13.2 安装 TensorFlow 环境 226 13.3 开始使用 TensorFlow 230 13.4 展开第 1 回合的训练:以老鼠教练为例 237 13.5 展开 100 回合更周全的训练 240 13.6 设计 Perceptron 类 243 13.7 采用 TensorFlow 的损失函数 245 13.8 撰写多层 Perceptron 程序 248 第 14 章 TensorF
15、low 应用范例 251 14.1 mnist 手写数字识别范例 252 14.2 开始训练 NN 模型 256 14.3 改进 NN 模型:建立两层 Perceptron 260 14.4 改进 NN 模型:建立三层 Perceptron 263 14.5 撰写一个 MLP 类 265 第 15 章 如何导出 AI 模型 268 15.1 导出模型入门 269 15.2 机器人:像老鼠一样学习 270 15.3 基于 TensorFlow 建立 AI 模型 270 15.4 存入 Checkpoint 文件 272 15.5 读取 Checkpoint 文件 275 15.6 读取流图定义文
16、件 277 15.7 导出模型:写入.pb 文件 280 15.8 导入模型,读取.pb 文件 284 从 AI 模型到智能机器人:基于 Python 与 TensorFlow X 1 第 1 章 AI 与面向对象 Python 1.1 AI 思维简史 1.2 Python 语言与 AI 1.3 布置 Python 开发环境 1.4 开始编写 Python 程序 1.5 面向对象(Object-Oriented)入门 1.6 软件中的对象(Object)1.7 对象与变量(Variable)1.8 对象与函数(Function)1.9 自然界的分类 1.10 软件的分类 从 AI 模型到智能机器人:基于 Python 与 TensorFlow 2 1.1 AI思维简史 从 20 世纪 50 年代开始,许多专家就希望将人类的知识和思维逻辑植入到机器(如计算机)里,让机器像人一样思考。当时就使用符号和逻辑来表示思考(Thinking)和表现出智能(Intelligence)性,人类努力向机器输入符号化的“思想”,并期望机器能够展现出像人一样的思考能力,然而这个期望并没有成功。后来,专家们另