Python系列-人工智能篇:带你搞懂TensorFlow基础入门
“阅读全文需8.5分钟,关注公众号:【测试开发技术】,后台回复me可免费领取学习资料。”
01 开篇
当今在互联网混,不随口说出深度学习,人工智能,机器学习,神经网络等词,人家都怀疑是个假的互联网人了,但相信大部分没有深入接触这块知识的人来说,对于这几个概念,都还是傻傻分不清?
记得,自从AlphaGo那波,业界似乎对机器学习推到一个新的高度??
本来是不太想沾这趟混水的,但是作为一名技术控,还是需要了解一下,至少也得对概念有点印象。
对于人工智能这块领域,笔者也还是一名小学生,如果对这块有不对的地方,请各位同学及时提出~
02 扫盲
深度学习,人工智能,机器学习,神经网络,这4个词在近几年出现的比较多,但是它们之间有什么关系呢?尤其,机器学习跟深度学习区别在哪里??
人工智能,英文Artificial Intelligence,简称AI,那人工智能的目的是什么?
网上一大堆,好听的叫解放/发展生产力,解放人类,总的来说是提高效率!!!
但更通俗的理解就是帮助人们:偷懒!
比如当你说一句话时,机器能够识别成文字,并理解你话的意思,进行分析和对话等。
人工智能的核心在于智能两字,那智能怎么来的?主要归功于一种实现人工智能的方法--机器学习;
那目前人工智能的应用场景有哪些:OCR、语音技术(比如Siri)、大数据应用等。
机器学习:一种实现人工智能的方法!
机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对事件做出决策和预测。
需要用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。
举个例子,当浏览网上商城时,经常会出现商品推荐的信息。
这是商城根据往期的购物记录和冗长的收藏清单,识别出这其中哪些是真正感兴趣,并且愿意购买的产品。
这样的决策模型,可以帮助商城为客户提供建议并鼓励产品消费。
机器学习通常分为三类:
- 第一类是无监督学习,指的是从信息出发自动寻找规律,并将其分成各种类别,有时也称"聚类问题"。
- 第二类是监督学习,监督学习指的是给历史一个标签,运用模型预测结果。如有一个水果,我们根据水果的形状和颜色去判断到底是香蕉还是苹果,这就是一个监督学习的例子。
- 最后一类为强化学习,是指可以用来支持人们去做决策和规划的一个学习方式,它是对人的一些动作、行为产生奖励的回馈机制,通过这个回馈机制促进学习,这与人类的学习相似,所以强化学习是目前研究的重要方向之一。
深度学习:一种实现机器学习的技术
深度学习是机器学习的一个子领域,是利用深度的神经网络,将模型处理得更为复杂,从而使模型对数据的理解更加深入;
深度学习的核心是,我们现在有足够快的计算机和足够的数据来实际训练大型神经网络
三者的区别和联系:
机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。
神经网络:是一种机器学习的算法
以“停止(Stop)标志牌”为例,将一个停止标志牌图像的所有元素都打碎,然后用神经元进行“检查”:八边形的外形、消防车般的红颜色、鲜明突出的字母、交通标志的典型尺寸和静止不动运动特性等等。神经网络的任务就是给出结论,它到底是不是一个停止标志牌。神经网络会根据所有权重,给出一个经过深思熟虑的猜测——“概率向量”。
神经网络是需要调制、训练的,不然会很容易出错的。
OK,讲到这里,相信大家对几者之间的概念已经有所了解了,至少知道这些是什么东西了。
简单总结下:
机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术,神经网络是一种实现机器学习的算法!
03 TensorFlow简介
TensorFlow是Google在2015年11月份开源的人工智能系统,由Google Brain团队的研发人员负责,该系统可以被用于实现机器学习和深度学习、语音识别、图片识别等多个领域。
官网对TensorFlow的介绍是一个使用数据流图技术来进行数值计算的开源软件库。
- 数据流图中的节点,代表数值运算;
- 节点节点之间的边,代表多维数据(tensors)之间的某种联系。
- 可以在多种设备(含有CPU或GPU)上通过简单的API调用来使用该系统的功能。
官网地址:https://github.com/tensorflow/tensorflow
什么是数据流图?
数据流图是描述有向图中的数值计算过程。有向图中的节点通常代表数学运算,但也可以表示数据的输入、输出和读写等操作;有向图中的边表示节点之间的某种联系,它负责传输多维数据(Tensors)。
节点可以被分配到多个计算设备上,可以异步和并行地执行操作。因为是有向图,所以只有等到之前的入度节点们的计算状态完成后,当前节点才能执行操作。
TensorFlow的特性
- 灵活性,TensorFlow不是一个严格的神经网络工具包,只要你可以使用数据流图来描述你的计算过程,你可以使用TensorFlow做任何事情。你还可以方便地根据需要来构建数据流图,用简单的Python语言来实现高层次的功能。
- 可移植性,TensorFlow可以在任意具备CPU或者GPU的设备上运行,你可以专注于实现你的想法,而不用去考虑硬件环境问题,你甚至可以利用Docker技术来实现相关的云服务。
- 提高开发效率,TensorFlow可以提升你所研究的东西产品化的效率,并且可以方便与同行们共享代码- 支持语言选项,目前TensorFlow支持Python和C++语言。
- 充分利用硬件资源,最大化计算性能。
TensorFlow最新版本为2.0,在TensorFlow2.x中摈弃了TensorFlow 1.x的诸多弊病,进一步整合TensorFlow和Keras,号称能像Numpy一样畅爽运行,快速、可扩展、可投入生产。
目前,TensorFlow包含开源的创新和社区参与,同时也具有大公司的支持,指导和稳定性。
正是因为有着大量的优势,TensorFlow适合个人和企业,从初创公司到大型公司,以及Google。即从2015年11月开源以来,TensorFlow已经成为最为令人兴奋的机器学习库之一。它被越来越多地应用到研究,生产和教育中。
04 TensorFlow安装
如果你已经安装了Python(或者是为了学习TensorFlow的目的安装的),你可以通过下面的pip安装:
pip install tensorflow
但是,这个方法的坏处在于,TensorFlow会覆盖现有的包,并安装特定的版本来满足依赖性。
如果你要使用这个Python来做其他用途的话,这个方法是不可行的。一个常见的做法就是在虚拟环境中安装TensorFlow,通过一个叫做virtualenv的软件实现。这取决于你的环境,你可能不需要在你的机器上安装virtualenv。要安装virtualenv的话,输入:
pip install virtualenv
可查看http://virtualenv.pypa.io 获取更多的操作指南。
为了在虚拟环境中安装TensorFlow,你必须要先创建虚拟环境,例如将其放在~/envs目录中,可以随意放在你喜欢的任何地方。
cd ~mkdir envsvirtualenv ~/envs/tensorflow
这会在~/envs目录下创建一个名为TensorFlow的虚拟环境(会展现为~/envs/tensorflow目录的形式)。启动这个虚拟环境,使用:
source ~/envs/tensorflow/bin/activate
提示会发现变化表明环境已经启动了,再使用输入pip的安装命令:
(tensorflow) pip install tensorflow
上面是CPU的版本,或者是安装GPU的版本:
pip install tensorflow-gpu
更多详细的安装介绍可参考:
https://github.com/jikexueyuanwiki/tensorflow-zh/blob/master/SOURCE/get_started/os_setup.md
05 TensorFlow第一个示例
现在,我们已经安装并设置好了TensorFlow的环境。开始写一个简单的TensorFlow的程序吧,打印当前TensorFlow版本、计算1+2的值,并将“Hello”和“World”结合起来,显示出字段——“HelloWorld”。
import os import tensorflow as tf os.environ["TF_CPP_MIN_LOG_LEVEL"]='2' print(tf.__version__) print(tf.add(1, 2).numpy()) hello = tf.constant('Hello, TensorFlow!') print(hello.numpy())
如果在运行过程中,提示:
image
这是因为tensorflow默认分布是在没有CPU扩展的情况下构建的,例如SSE4.1,SSE4.2,AVX,AVX2,FMA等。默认构建(来自pip3 install tensorflow)可以与尽可能多的CPU兼容。如果没有GPU,并希望尽可能利用CPU的资源。
可以在最顶行增加如下代码
import os # os.environ["TF_CPP_MIN_LOG_LEVEL"]='1' # 这是默认的显示等级,显示所有信息 os.environ["TF_CPP_MIN_LOG_LEVEL"]='2' # 只显示 warning 和 Error # os.environ["TF_CPP_MIN_LOG_LEVEL"]='3' # 只显示 Error
最后,关注公众号「测试开发技术」后台回复me, 可扫码添加作者微信,免费领取学习资料。
更详细,可点击:阅读原文
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python学习路线:深入探讨 Python 的 import 机制:实现远程导入模块(精华版)
所谓的模块导入,是指在一个模块中使用另一个模块的代码的操作,它有利于代码的复用。 也许你看到这个标题,会说我怎么会发这么基础的文章?(当然也会有基础的文章啦) 与此相反。恰恰我觉得这篇文章的内容可以算是 Python 的进阶技能,会深入地探讨并以真实案例讲解 Python import Hook 的知识点。 当然为了使文章更系统、全面,前面会有小篇幅讲解基础知识点,但希望你能有耐心的往后读下去,因为后面才是本篇文章的精华所在,希望你不要错过。 1. 导入系统的基础 1.1 导入单元构成 导入单元有多种,可以是模块、包及变量等。 对于这些基础的概念,对于新手还是有必要介绍一下它们的区别。 模块:类似 .py,.pyc, .pyd ,.so,*.dll 这样的文件,是 Python 代码载体的最小单元。 包 还可以细分为两种: Regular packages:是一个带有 __init__.py 文件的文件夹,此文件夹下可包含其他子包,或者模块 Namespace packages 关于 Namespace packages,有的人会比较陌生,我这里摘抄官方文档的一段说明来解释一下。 Na...
- 下一篇
Python基础教程:新手朋友在python中常见的错误信息汇总
Python基础教程:新手朋友在python中常见的错误信息汇总 最近很多同学都在问很多错误是怎么回事,其实他们都是Python中非常基础的错误,并且错误也告诉你很清楚,只需要针对错误去解决就好了。那么我今天针对常见的错误进行一个总结,希望对大家有帮助。 一般一个错误分为错误类型:具体原因。其中错误类型基本不变,具体原因会顺序万变,我们拿出常见的给大家作为一个参考,注明:具体原因中引号内的信息是为了方便举例写的,真实你出现的错误并不一定和我引号里的内容一致,恩甚至说应该是肯定不一样的~ 1、IndentationError: unindent does not match any outer indentation level 解释:缩进错误,python不是通过{}包裹代码,而是进行tab或者空格的方式对代码进行缩进,如果 缩进前后没有对齐,就会报这个错误 2、NameError:name 'test' is not defined 解释:你没有定义一个叫test的变量,就直接使用test去执行业务逻辑,就会报这个错误 3、SyntaxError: invalid syntax 解释...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启