TensorFlow学习笔记02:TensorFlow基本简介
来源:互联网 发布:软件著作权申请网址 编辑:程序博客网 时间:2024/06/06 09:43
转载自http://www.jiaxiaojunjxj.cn/2017/11/03/TensorFlow%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B002/
TensorFlow学习笔记02:TensorFlow基本简介
在新的算法理论不断涌现的同时,各种深度学习框架也不断出现在人们视野,比如Torch,Caffe等等。TensorFlow是Google开发的第二代机器学习系统,于2015年底开源,成为了新一代流行的机器学习的算法框架。本节将介绍一些tensorflow的基本的概念,详细可以见tensoflow官方文档。
tensorflow的编程模型
Tensorflow中的计算可以表示为一个有向图(directed graph),或称计算图(computation graph),其中每一个运算操作将作为一个节点(node),节点与节点之间的连接成为边(edge),而在计算图的边中流动(flow)的数据被称为张量(tensor),所以形象的看整个操作就好像数据(tensor)在计算图(computation graphy)中沿着边(edge)流过(flow)一个个节点(node),这就是tensorflow名字的由来的。
计算图中的每个节点可以有任意多个输入和任意多个输出,每个节点描述了一种运算操作(operation, op),节点可以算作运算操作的实例化(instance)。计算图描述了数据的计算流程,它也负责维护和更新状态,用户可以对计算图的分支进行条件控制或循环操作。用户可以使用pyton、C++、Go、Java等语言设计计算图。tensorflow通过计算图将所有的运算操作全部运行在python外面,比如通过c++运行在cpu或通过cuda运行在gpu 上,所以实际上python只是一种接口,真正的核心计算过程还是在底层采用c++或cuda在cpu或gpu上运行。
Tensorflow的几个比较重要的概念:tensor, computation graphy, node,session。正如前面所说,整个操作就好像数据(tensor)在计算图(computation graphy)中沿着边(edge)流过(flow)一个个节点(node),然后通过会话(session)启动计算。所以简单来说,要完成这整个过程,我们需要的东西是要定义数据、计算图和计算图上的节点,以及启动计算的会话。
TensorFlow编程范式(工作流程)总结:
1.建立一个计算图(数学操作)
2.初始化变量
3.创建会话
4.在会话中运行图形
5.关闭会话
Tensorflow的重要概念
To use TensorFlow you need to understand how TensorFlow:
- Represents computations as graphs.
- Executes graphs in the context of Sessions.
- Represents data as tensors.
- Maintains state with Variables.
- Uses feeds and fetches to get data into and out of arbitrary operations.
计算图(computation graphy)
计算图是由一个个节点和连接各个节点的边组成,因此要定义一个计算图,只需要定义好各个节点以及节点的输入输出(对应计算图的边)。节点代表各种操作,如加法、乘法、卷积运算等等,输入输出主要是各种数据(tensor)。
节点(node)
计算图中的每个节点可以有任意多个输入和任意多个输出,每个节点描述了一种运算操作(operation, op),节点可以算作运算操作的实例化(instance)。一种运算操作代表了一种类型的抽象运算,比如矩阵乘法货响亮加法。tensorflow内建了很多种运算操作,如下表所示:
会话(session)
计算图里描述的计算并没有真正执行,只是进行了定义和描述,要实际执行我们就需要在会话(session)里被启动. 这时session才会将计算图上的节点操作op分发到诸如CPU或GPU之类的设备上, 同时提供执行op的方法. 这些方法执行后,将产生的tensor返回.
数据(tensor)
TensorFlow程序使用tensor数据结构来代表所有的数据, 计算图中的节点间传递的数据都是tensor. 你可以把TensorFlow tensor看作是一个n维的数组或列表. 一个 tensor包含一个静态类型rank,和一个shape。
注:张量tensor是矩阵概念的推广,表示更多维度的矩阵。矩阵表示二维线性映射,tensor表示多维线性映射,tensor是对Matrix的泛化,表示1-dim、2-dim、n-dim的高维空间。
变量(Variable)
在tensorflow里有一类数据比较特殊,那就是我们需要在整个计算图执行过程中需要保存的状态。比如我们在进行神经网络训练时要时刻保存并更新的网络参数,这时我们就需要用到Varibale来保存这些参数。
feed & fetch
实际上,tensorflow提供了一个feed机制来将tensor直接放置到计算图的任意节点操作上去。“feed”这个词用的很形象啊,就像我们在上课学习时,老师拿课本里的各种例子、习题往我们脑子里喂。那么,这个利用这个feed机制我们就可以把训练数据“喂”到计算图的输入中去。一般我们采用placeholder来指定一个feed操作,这个placeholder就像是一个容器一样来接收训练数据,然后在最终进行计算时只需要用placehoder里的数据替换计算图的输入量就可以了。一个简单的例子:
input1 = tf.placeholder(tf.float32)input2 = tf.placeholder(tf.float32)output = tf.mul(input1, input2)with tf.Session() as sess:print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))
fetch,正如其字面意思,就是取回数据的意思。我们将计算图部署到session上进行计算后,需要将计算结果取回,这就是一个fetch。下面是取回多个tensor的例子
input1 = tf.constant(3.0)input2 = tf.constant(2.0)input3 = tf.constant(5.0)intermed = tf.add(input2, input3)mul = tf.mul(input1, intermed)with tf.Session() as sess: result = sess.run([mul, intermed]) print result
- TensorFlow学习笔记02:TensorFlow基本简介
- TensorFlow学习笔记(1)--TensorFlow简介,常用基本操作
- TensorFlow学习笔记--TensorFlow简介,常用基本操作
- [TensorFlow 学习笔记-03]TensorFlow简介
- [TensorFlow学习笔记1]TensorFLow的基本概念和基本使用
- tensorflow学习笔记(一)——tensorflow基本使用
- Tensorflow学习笔记(2)-基本运算
- tensorflow学习笔记----一(基本使用)
- 【学习笔记】TensorFlow 入门之基本使用
- TensorFlow学习笔记2:基本运算
- 深度学习---tensorflow简介
- 谷歌TensorFlow人工智能学习系统简介及基本使用入门
- TensorFlow学习笔记-1
- TensorFlow学习笔记
- TensorFlow 深度学习笔记
- TensorFlow学习笔记1
- tensorflow-Alexnet学习笔记
- TensorFlow学习笔记
- [C]求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12
- css
- 【MD5】MD5校验文件的正确性
- spring.profiles.active 针对多种启动环境的spring配置
- hdu1505(最大子矩阵)
- TensorFlow学习笔记02:TensorFlow基本简介
- python 进程的理解
- Switch用String做参数
- Reflection2017.12.4
- A Plug for UNIX POJ
- 用java来求出n以内的质数的优算写法
- mui下a标签href失效问题,以及a标签的其他小坑。
- 界面平移动画
- WMware虚拟机与ubuntu14.04下载与安装