收藏本站

人工智能培训机构,上海涛德,算法工程师,数据科学家高端培训机构-上海涛德

查看: 1319|回复: 0

人工智能入门:tensorflow 框架基础

[复制链接]

46

主题

0

好友

666

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-4-10 18:08:54 |显示全部楼层


机器学习是一种人工智能,具体来说是一门计算机科学。它的研究对象是从数据中学习到的系统和算法,并从中归纳出新的知识。
一段程序或者一个系统需要通过机器学习来提高他在某个特定任务上的性能,学习的是过往的经验。这种学习能力主要在于通过数据进行模式识别。
训练一个机器学习系统,有两种方式:监督学习和无监督学习。
监督学习是最常见的机器学习形式。在训练阶段把已知的数据,又称训练集,输入到机器学习系统,训练集应该包括原系统的输入和期望输出;很多监督学习算法都有一个共性:通过最小化一个代价函数进行训练。代价函数计算期望输出和机器学习系统的输出之间的标准偏差。完成训练后,模型的精确性是通过测量另一组训练集的期望输出与机器学习系统输出之间的偏差来测定。这组训练集又称为验证集,它必须与训练集完全独立。
4aef000104d17f737278.jpg
4aed0001096359476368.jpg
无监督学习经常用于聚类问题,这类问题只提供大量样例,你不知道分类的依据,也不知道应该分成多少个类。这种问题是监督学习无法解决的,因为你无法给出期望输出。
4af00000fd971a7dd1a6.jpg
4aed0001096359476368.jpg
深度学习代表了机器学习领域的重大进步,在很多应用领域获得了前所未见的成功,例如图像识别,语音识别和自然语言处理(NLP).深度学习获得如此大的成功,主要有以下几个原因:
硬件性能的提升使得海量数据训练成为可能
大数据时代来临,海量数据的处理需求急迫
4aee0005464e47e3df22.jpg
4aed0001096359476368.jpg
深度学习是基于人脑处理信息和学习的方式,并对外部刺激的响应。深度学习通过多层机器学习模型组成,前一层的输出用作下一层的输入。多层次的生物学意义在于,当大脑接收到图像信息时,大脑要分成多个阶段来处理,例如边界检测和形式感觉。
  • python基础

>>> class Myclass: #定义一个类,只有类变量common
... common=10
...
>>> ins1=Myclass()
>>> ins2=Myclass() #创建类的两个实例
>>> ins1.common
10
>>> ins2.common #两个实例的common都被缺省赋值为10
10
>>> Myclass.common=30 #使用类名赋值,所有实例都会更新common的值,因为他们指向同一个对象Myclass.common
>>> ins1.common
30
>>> ins2.common
30
>>> ins1.common=10 #给ins1.common分配一个新的对象,从此两个实例不再同步。
>>> ins1.common
10
>>> ins2.common
30
>>> Myclass.common=50 #即使重新给类变量赋值,两个实例不再同步。
>>> ins1.common
10
>>> ins2.common
50
>>> ins3=Myclass() #此后新建的实例,common都等于50,除非Myclass.common重新赋值
>>> ins3.common
50
准备知识就这些了,下面开始动手学习tensorflow了。
我们来看这段代码
>>> x=1
>>> y=x+9
>>> print(y) #这三句很好理解,就是计算了y=1+x=1+9=10
10
>>> import tensorflow as tf
>>> x=tf.constant(1,name='x') #创建常量x,且值为1
>>> y=tf.Variable(x+9,name='y') #创建变量y,定义y=x+9
>>> print(y) #输出y
<tf.Variable 'y:0' shape=() dtype=int32_ref> #print的结果
最终输出的不是10,却是y的数据类型。这是因为variable y并不表示当前的值,它的本意是:当计算variable y时,用x+9赋值。也就是说这只是定义了x到y的一个函数。
要想完成这个函数运算,需要以下几条语句
>>>model= tf.global_variables_initializer() #初始化模型变量
<tf.Operation 'init_1' type=NoOp>
>>> with tf.Session() as session: #创建一个session来计算y
... session.run(model) #运行模型
... print(session.run(y)) #输出模型运行结果
10
这个步骤中,运行图又叫做数据流图,是在session中创建的。y=x+9直到session执行时才完成计算。
  • 数据流图(data flow Graphs)

机器学习是重复计算复杂数学表达式的结果,在tensorflow中,计算过程用数据流图描述,图中每个node表示一个数学运算的实例(加,减,乘,除等),没条边是一个多维数据集(tensor),运算就在边上执行。
4aee000546de5915f8ae.jpg
4aed0001096359476368.jpg
node(节点),每个节点表示一个运算实例,每个节点必须至少有一个输入,可以没有输出。
Edges(边),tensorflow中有两种边,普通的边和特殊的边
普通的边是数据结构(tensors)的载体,一个节点的输出变成另一个节点的输入。
特殊的边不做节点之间的连接工具,他表明两个节点之间的控制关系。例如一条从A节点到B节点的特殊边表明B只有在A完成之后才能执行。
4af200009caa597644de.jpg
4aed0001096359476368.jpg
operation(运算):它表示一个抽象的计算,例如矩阵加或者乘。相同的运算能操作不同的tensor元素类型,例如加法可以用于整数加法,也能用于浮点数加法。
kernel(内核):它表示运算的具体执行。一个kernel定义了在特定硬件资源上运算的执行方式。例如一个加法可以在cpu上执行也可以在GPU上执行。
session(会话):当用户程序要在tensorflow运行系统上建立通信时,就必须创建session。一旦session创建好了,一个初始的空的数据流图就创建好了。
session.extend() 函数可以用来扩展运行图,即请求增加节点或者边。
session.run():每调用一次完成一次运行图的全部计算流程。
  • 如何使用tensorboard?

tensorboard是可视化工具,用来分析数据流图,也用于更好理解机器学习模型。它能看图像化显示各种关于参数和运算细节的统计。有时一个神经网络有36000个节点,为此,tensorboard可以把多个节点显示成一个模块。另外可视化过程是交互式的,用户可以放大,扩展结点来观察细节。
tensorboard在开发中也很有用,可以用来调整机器学习模型。我们用一个简单例子来理解tensorboard的使用。
import tensorflow as tf
a=tf.constant(10,name="a")
b=tf.constant(90,name="b")
y=tf.Variable(a+b*2,name="y")
model=tf.global_variables_initializer()
with tf.Session() as se:
merged = tf.summary.merge_all() #该指令会合并运行图中所有的summary
writer = tf.summary.FileWriter("/tmp/tensorflowlogs",se.graph) #该指令把所有的summary写入文件
se.run(model)
print(se.run(y))
以上代码可以输出结果190.
然后运行sudo tensorboard --logdir=/tmp/tensorflowlogs 会显示一条类似这样的消息
TensorBoard 0.4.0rc3 at http://VM-149-75-ubuntu:6006
那么你可以通过http://127.0.0.1:6006来访问tensorboard。我这边的显示结果如下:
4af200009d4d76b34e9f.jpg
4aed0001096359476368.jpg
tensorboard使用特殊的图标来区分常量和summary节点。每个节点每条线是什么含义,可以参考左下角的图例



您需要登录后才可以回帖 登录 | 立即注册

<点击:上海涛德Oracle OCM认证及BI商业智能课程>|人工智能培训-上海涛德 ( 沪ICP备14006824号 )|网站地图   My title page contents

GMT+8, 2018-7-17 10:02 , Processed in 0.241898 second(s), 25 queries , Gzip On.

回顶部