从AI模型到智能机器人:基于 Python 与 TensorFlow(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-31 16:45:25

点击下载

作者:高焕堂

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

从AI模型到智能机器人:基于 Python 与 TensorFlow

从AI模型到智能机器人:基于 Python 与 TensorFlow试读:

未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。

版权所有,侵权必究。

图书在版编目(CIP)数据

从AI模型到智能机器人:基于Python与TensorFlow/高焕堂著.—北京:电子工业出版社,2019.9

ISBN 978-7-121-37011-3

Ⅰ.①从… Ⅱ.①高… Ⅲ.①软件工具-程序设计②人工智能-算法 Ⅳ.①TP311.561②TP18

中国版本图书馆CIP数据核字(2019)第132325号

责任编辑:刘 伟

印  刷:北京季蜂印刷有限公司

装  订:北京季蜂印刷有限公司

出版发行:电子工业出版社

     北京市海淀区万寿路173信箱  邮编:100036

开  本:720×1000 1/16 印张:18.5 字数:326千字

版  次:2019年9月第1版

印  次:2019年9月第1次印刷

定  价:79.00元

凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。

质量投诉请发邮件至zlts@phei.com.cn,盗版侵权举报请发邮件至dbqq@phei.com.cn。

本书咨询联系方式:(010)51260888-819,faq@phei.com.cn。前 言

随着AI(Artificial Intelligence,人工智能)技术及应用环境的不断革新,其应用范围也随之扩大。Python以其独特的兼容性,成为最受欢迎的编程语言之一,同时,也成为众多编程爱好者入门的首选语言。Python开发者要具备面向对象(Object-Oriented)的思维和AI基础,这是非常有必要的。

写作初衷与图书特色

本书由中国台湾(下称台湾)知名的IT人士高焕堂先生所著。

高先生在进行AI技术培训的过程中,发现很多用户对利用Python和TensorFlow平台进行AI开发并不熟练,这其中包括华为、百度、腾讯(成都)等国内知名科技公司的部分高级设计师和架构师。因此,他在授课答疑后,根据大多数初级、中级用户的学习水平,倾注心血来编写此书,为大多数未能现场听讲的读者普及AI技术知识。

本书主要特色如下。

● 理论完备:讲解了从AI思维简史到Python、TensorFlow平台的开发流程与应用,如利用Python编写AI机器人进行机器学习训练、利用TensorFlow进行更深度的机器学习训练,以及利用神经网络训练模型提高图片识别率等内容,全书内容详尽,理论完备。

● 浅显易懂:以AI基础技术理论为框架,以生活中常见的案例和浅显易懂的语言来讲解,在逐一细化程序编写方法的同时,力求可操作性,便于入门读者快速上手。

本书主要内容

第1~9章从OOP+Python 应用出发,由浅入深,循序渐进,帮助用户建立扎实的AI软件开发的技术根基。

第10~12章以AI技术简史为起点,以机器学习为范例,说明如何用Python来撰写简单的AI模型(如Perceptron模型),并通过实际训练,让用户了解机器学习的原理,以及如何使用Python程序进行调试。

第13~15章以TensorFlow平台为例,说明如何利用该平台来设计NN(神经网络)模型,熟悉其训练及应用过程。

最后,将用户在TensorFlow 环境下训练好的AI模型,移植到Android手机、机器人(如华硕Zenbo)或树莓派(RPi)上,大大提升终端设备的智能性,从而创造更大的商机。希望本书能陪伴你驰骋于Python和TensorFlow技术领域之中,使你在未来的道路上大展宏图。

作者简介

高焕堂,拥有40多年软件设计经验,专注于AI和VR技术与创客辅导,在AI、Docker容器技术、Android终端平台等领域都有深入的研究。由于其对台湾软件架构设计领域的卓越贡献,曾被誉为“台湾软件架构设计大师”。

现任台湾铭传大学“AI创新&设计思维”课程的指导教授,大连艺术学院创新创业导师、厦门VR/AR协会创业导师兼荣誉会长。编者2019年8月第1章 AI与面向对象Python1.1 AI思维简史1.2 Python语言与AI1.3 布置Python开发环境1.4 开始编写Python程序1.5 面向对象(Object-Oriented)入门1.6 软件中的对象(Object)1.7 对象与变量(Variable)1.8 对象与函数(Function)1.9 自然界的分类1.10 软件的分类1.1 AI思维简史

从20世纪50年代开始,许多专家就希望将人类的知识和思维逻辑植入到机器(如计算机)里,让机器像人一样思考。当时就使用符号和逻辑来表示思考(Thinking)和表现出智能(Intelligence)性,人类努力向机器输入符号化的“思想”,并期望机器能够展现出像人一样的思考能力,然而这个期望并没有成功。

后来,专家们另寻他途,转而采用Rosenblatt在1957年提出的“感知器”(Perceptron)程序,使用重入函数设计的程序“训练”各种逻辑公式,实现初步的机器“学习”,这称为“连结主义”(Connectionism),创建了“神经网络”(Neural Networks)这个名词。这个途径并不是向机器输入符号化的知识和逻辑来让机器展现出像人一样的思考,而是尽量让计算机表现得有智能,但人们并不关心机器是否真的“表现”出思考的逻辑。

AlphaGo就是这项新途径的代表。2016年,AlphaGo在围棋比赛上击败了人类的世界冠军。AlphaGo的棋艺(智能)是建立在人类已有的经验和知识之上,基于人类大量的历史棋谱,迅速学习和领悟人类的棋艺,从而进行自我训练、不断升级后战胜了人类。到了2017年,DeepMind团队的新一代人工智能AlphaGo Zero,基于不同的学习途径,没有参考人类的经验知识,也没有依赖人类历史棋谱的指导,完全从新开始自我学习,无师自通,其棋艺竟然远远超过AlphaGo,而且百战百胜,以100∶0的佳绩完胜它的前辈AlphaGo。1.2 Python语言与AI

Python是当前非常流行的一种计算机语言,在AI科技潮流下,它表现得更加抢眼,因为在AI科学领域的许多链接库(Library)、框架(Framework)或平台(Platform)都是以Python作为主要语言开发出来的。例如,Google旗下的TensorFlow、百度旗下的Paddle Paddle,其用户接口(UI)层的框架都是用Python撰写的。

Python是解释型(Interpreter)语言,简单易用,其搭配性能高效的C/C++,从而大幅提升AI运算的效率。多年来Python积累了非常多优秀的AI深度学习的链接库(Library),使得当今大部分AI深度学习框架都支持它,这让它成为AI时代的主流计算机语言之一。1.3 布置Python开发环境

如果你电脑中没有安装Python软件,需要先安装。目前官网已经推出Python 3.7.x版本,但为了确保能与TensorFlow软件顺畅整合,本书仍使用稳定版本的3.6.x。先打开Python官网https://www.python.org/(此处以Windows版本为例),如图1-1所示。图1-1

在该页面上,用户可以查看各个版本的Python,此处选择Python 3.6.5版本下载,如图1-2所示。图1-2

如用户电脑系统为Windows 32位,请选择Windows x86版本;如是64位系统,请选择Windows x86-64版本。此处单击“Windows x86-64 executable installer”链接,然后根据提示下载安装程序。下载完成后,双击该安装程序,弹出安装对话框,如图1-3所示。图1-3

此时,选中“Add Python 3.6 to PATH”复选框,然后单击“Install Now”选项进行安装,如图1-4所示。图1-4

安装成功后,出现如图1-5所示的界面。

用户单击Windows系统中的“开始>所有程序”,可以看到Python3.6文件夹,如图1-6所示。

其文件夹下的第1个IDLE(Python 3.6 64-bit)是Python的常用开发环境,单击该选项出现如图1-7所示的对话框。图1-5图1-6图1-7

用户即可在其中编写Python程序,如图1-8所示。图1-81.4 开始编写Python程序

在已安装好的Python解释器中输入命令,如图1-9所示。图1-9

接下来,开始编写程序,首先新建一个文件。选择“File>New File”菜单,如图1-10所示。

弹出一个新窗口,如图1-11所示。图1-10图1-11

用户可以在这里编写Python代码,如输入图1-12所示的内容。

其中的“#”代表注释文字,可有可无,下面是两行Python命令。接下来,把这段代码保存,选择“File>Save”菜单,如图1-13所示。图1-12图1-13

用户根据习惯给文件命名保存,如图1-14所示。图1-14图1-15

单击“保存”按钮,保存Ex01-01.py程序文件。用户可以在保存位置打开该文件,如图1-15所示。双击该文件运行,并选择“Run>Run Module”菜单,如图1-16所示。运行程序后,输出结果为525,如图1-17所示。图1-16图1-17

最后,选择“File>Close”菜单关闭窗口,如图1-18所示。图1-18

当然,用户也可以使用图形化的IDE开发工具,如PyCharm。用户可以到官网下载,如图1-19所示。图1-19

单击“DOWNLOAD”按钮,即可下载安装。安装完成后,编写Python代码并运行,如图1-20所示。图1-20

除PyCharm外,用户还可以根据需要挑选适合自己的开发环境。1.5 面向对象(Object-Oriented)入门1.5.1 对象(Object)

自然界中有各式各样的东西,如阳光、田野、动物等。随着阅历的增长,人们对自然界的东西也认识越多。对个人而言,所认识的东西,都可以称为对象(Object)。如李白心中最清楚的对象是他的诗,每一首诗都是一个对象。人一旦认识某一样东西,一般就能说出其特点,并可以与其他对象进行比较,常见的特点如下:

● 对象的属性(Attribute)。

● 对象的行为(Behavior)。

如玫瑰花的属性是:有刺、红色,代表爱慕等;其行为是:含苞待放、盛开和散发爱意等。鸟儿的属性是:有翅膀、尾巴;其行为是:唱歌、会飞等。

了解一个东西的属性和行为,就表示对该东西有了认识和概念(Concepts)。尽管有些东西并不存在,但只要对其有概念,就是对象,如古代神话中的龙、凤凰、月中白兔、嫦娥等都是我们熟悉的对象。但对于没有听过嫦娥奔月故事的外国人来说,嫦娥并不是对象。1.5.2 消息(Message)

自然界的对象常互相沟通、交互,才产生多姿多彩的大自然景色。例如,大家熟悉的诗句:

泪眼问花花不语,乱红飞过秋千去。

其对象包括女主角、花和秋千,女主角与花的沟通方式是“问”和“语”,女主角和秋千的交互作用“荡”,花和秋千的交互作用“飞过”,无论“沟通”或“交互作用”都表示它们在互相传递消息(Message)。女主角心中难过,传递消息给花,哪知花儿不知如何回答,此时花儿传回消息给女主角,令女主角更加伤感。1.5.3 事件(Event)

有些对象的内部状态(State)容易受外来刺激而变化,如上节的女主角因爱人远离而变得伤感,甚至流泪。当对象的状态改变(State Change),就表示某“事件”(Event)发生了。如灯泡里的钨丝烧坏了,于是“灯泡烧掉”事件发生了。一件事件的发生,常引发另一事件的发生。如红绿灯坏了,使十字路口的汽车乱成一团,汽车也更容易互相碰到,甚至会引发一连串的事件。小到细胞的分裂繁殖,大到地球上刮台风,都是大家所熟悉的事件。

台风吹倒大树,大树压到汽车,汽车撞到红绿灯等,这是生活中常见的现象。春节到了,人们排队买火车票,坐火车回家过年,到银行取钱,给晚辈发红包等,这是社会中常见的现象。这一连串的事件,都在互相影响。在“面向对象编程”(Object-Oriented Programming,简称OOP)观念中,事件所涉及的东西是对象,对象的内部状态变化是事件。像台风、树、汽车、红绿灯都是对象。台风风速及方向的变化是事件,树干禁不起风的吹袭而产生变化是事件,汽车被压而失去控制是事件,红绿灯坏了也是事件。总之,对象内部的变化,产生事件,事件再触发其他对象的变化,引发其他事件往复循环。

事件,即对象内部状态的变化,如何影响别的对象呢?很简单:个体因内部变化而促发对象的特殊行为(Behavior),对象的行为再激发其他对象内部的变化,即触发别的事件影响其他对象。“吹袭”是台风的行为,“倒下”是大树的行为,“失控”是汽车的行为,“不亮了”是红绿灯的行为。风的狂吹,是台风对象的行为,促使大树枝干的断裂;倒下,是树的行为。树的行为“倒下”促使汽车状态变化,产生失控行为,这行为促使红绿灯变化,而导致“不亮”的行为,使得交通混乱。1.6 软件中的对象(Object)1.6.1 抽象的目的

牛津词典对“抽象”(Abstraction)的定义如下:“人们脑海中对重点与细节的区分行动(The Act of Separating in Thought)。”抽象的主要目的有:

● 掌握重点(Essense),避免被复杂的细节(Detail)所迷惑。例如,准备高考令考生千头万绪,“重点复习”令其事半功倍。

● 求同存异,找出对象之间的共同特性。例如,大象和鲸鱼有区别也有相同之处,若不计较其不相同之处,可发现共同点:活的,因此属于同种类:生物。1.6.2 抽象表示

软件里的对象是自然界对象的抽象表示(Abstract Representation),即软件内的对象逼真地表达了自然界的实际景象,但也仅表达重要的景象。因此,人们心中构思的软件和眼中所见到的世界是一致的。软件是自然界实景的抽象表示,其能简单明了地帮助人们了解和掌握真实景象。例如,航天中心借助软件仿真与控制宇宙飞船的航行。所以,软件的目的是为真实事物建立抽象模式或模型(Model the Reality)。1.6.3 数据和函数

软件的对象是由数据(Data)和函数(Function)一起组成的。

数据表达自然界对象的属性,函数表达自然界对象的行为。因此,软件的对象能抽象地表达自然界的对象,软件能逼真地表达自然界的真实情景。例如,为了描述“泪眼问花花不语,乱红飞过秋千去”,软件中应该有3个对象—女主角、花和秋千,如表1-1所示。表1-1 软件中的对象和数据、函数关系

因此,数据描述对象的静态特性:花是红色的;函数表达对象的动态特性:人在流泪、花在飞舞等。1.6.4 历史的足迹

传统上,数据与函数分而治之。“函数”代表计算机的动作,其动作的目的是“处理”数据,如图1-21所示。

其中,a和b是数据;而b="very"+a是一行命令,是数据处理的一个动作。数据是被动的,函数是主动的。和树叶落了一样,一片树叶,因到了秋天变黄才随风飘落,是叶子的状态(内部数据)发生改变,才有“落下”的行为。因此,数据并不完全是被动的。若软件想满足人们的生活习惯,符合自然界的规则,应修正传统的观点,将数据和函数化零为整,合为一体成为如今所说的“对象”。图1-211.7 对象与变量(Variable)1.7.1 数据类型

数据类型(Data Type)就是数据的种类。Python有3种最常用的基本数据:字符串、实数和整数。如花有3种属性。

● Name:"Rose"。

● Price:12.55元。

● Month:6个月。

其中,"Rose"是字符串类型的数据、12.55为实数(又称为浮点数)类型的数据、6为整数类型的数据,以Python程序表达如图1-22所示。图1-22

在该程序中,嗅不出“花”的味道。程序中的Name、Price及Month只是描述花的特性,而不是完整的花。计算机不认识,也无法接受实体的玫瑰花,只能接受更小单位的数据。因此,人们在与计算机沟通时,必须化整为零,对每一种特性分别描述,而这违反了人们自然的“抽象”能力。使得人们心中装满复杂的细节,无法提纲挈领,专注于相应的重点。

人们盼望计算机具有抽象的能力,能欣赏人们送玫瑰花时的心意!现在,OOP观念已改变了计算机的“个性”,它已能够接受数据的深刻含义了。在OOP观念中,上面的Python程序表达如下:

该程序有两个特点:

● 创造了新数据类型—“花”。flower是“花”的变量,就像Price是实数(又称浮点数)的变量一样。只是flower内含了3 个小变量—Name、Price 和Month。同样,也可以创造“树”“山”“鸟”等新数据类型,来描述自然界对象。“花”内包含3项基本数据类型,依此类推,也可创造“公园”数据类型,其内含有“小山”“树木”“鸟”等数据类型。因此,在OOP 观念中,用户可以创造数据类型来描述自然界或心中任意所想的对象。

● 提升沟通层次—本质上,用户编写程序时,是在与计算机对话;这儿还可以升级为与flower对话。如使用命令:

常规解释为“请计算机输出flower变量的内容”,但在OOP 观念中,其意义可以提升为:“花儿,用户的内容是什么?”计算机像一座现代化的住宅,拥有各种时髦设备,而flower是住宅的主人。1.7.2 变量即对象

在OOP观念中,变量就是对象,如图1-23所示。图1-23

其中Name是变量(Variable),内含字符串"Rose"。以传统眼光来看,这个命令的意义为:“请计算机将"Rose"字符串存入Name变量中。”若以OOP 眼光来看,其意义为:“Name,这个"Rose"字符串给用户。”由原来与计算机的对话,转变为与Name对象(即变量)对话,其中的“对话”是:“这个"Rose"字符串给用户。”

就如同,妈妈对小珠说:“这美丽的耳环给你。”我们称这对话的内容为“消息”(Message),表述如下。

小珠是对象,妈妈将消息—“给耳环”送给小珠对象,小珠收到此信息,欣然同意。同样,上述的Python命令,可解释如下:“=”与“给”的角色相近,都代表一项行动(要求),即表达外界送消息的目的。“"Rose"”与“耳环”的角色相近,都代表行动的参数,是外界送来的数据。因此,消息常包含两项成分。

● 行动要求:如“=”表达了“存入”“给予”或“复制”的动作。

● 参数:如“"Rose"”表达了传来的数据。

消息的作用:刺激对象,令其改变内部状态。消息的目的:要求对象提供服务。例如,在火车站将钱币投入售票机时,对售票机个体而言,用户的投币或按键都可以认为是消息的到来,消息会改变售票机的内部状态—金额逐渐增加。投足钱币时,售票机提供服务—送出火车票。

同样,小珠接获妈妈的消息时,也有所变化—内心喜悦且耳朵上多了耳环,变得更漂亮。妈妈心中的要求也许是:“在宴会中让妈妈有面子。”这是小珠的服务。Name对象接到消息时,其内部会有所变化—Name内部的值变为"Rose";其服务是“保存"Rose"字符串”。

此外,常见的服务:送出消息,如图1-24所示。图1-24

其中,Color和Name两个对象都接到消息,过程如下。

Step 1:Color和Name对象内都是空的。

Step 2:Color接收消息—“="Red"”类,其改变了内部状态。

此时Color对象的内容为“"Red"”字符串。

Step 3:Color对象接收另一个消息—“+"Rose"”类,同时送出信息给Name 对象。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载