tensorflow 基本概念回顾

https://zhuanlan.zhihu.com/p/46881906

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。2015年它由Google发布并宣布开源。

它的名字来源于本身的工作原理,Tensor(张量)意味着一个N维的数组,Flow(流)就是流动。Tensorflow的运行过程就是张量在数据流图中流动的过程。

 

那么,什么是数据流图(Data Flow Graph)?

 

它由点(node)和边(edge)组成。

其中,节点通常以圆、椭圆或方框表示,代表对数据的运算或某种操作。边是节点之间的连接,用带箭头的线表示,指向节点的边表示输入,从节点引出的边表示输出。输入可以是来自其他数据流图,也可以表示文件读取、用户输入。所以在本质上,TensorFlow的数据流图就是一系列链接在一起的函数构成,每个函数都会输出若干个值(0个或多个),以供其它函数使用。

除了上面两个概念,以下几个也很重要:

图(Graph):图描述了计算的过程,TensorFlow使用图来表示计算任务。

张量(Tensor):TensorFlow使用tensor表示数据。每个Tensor就是一个多维的数组。

操作(op):operation的缩写,一个op就是某节点上的一个操作,输入0个或多个Tensor,执行计算,产生输出0个或多个Tensor。

会话(Session):图必须在称之为“会话”的上下文中执行。会话将图的op分发到诸如CPU或GPU之类的设备上执行。

变量(Variable):运行过程中可以被改变,用于维护状态。

 

import tensorflow as tf
# 创建两个常量节点
node1 = tf.constant("hello")
node2 = tf.constant("world")
# 创建一个 node3 节点,对上面两个节点执行 + 操作
node3 = node1 + node2
# 打印一下 adder 节点
print(node3)
# 打印 adder 运行后的结果
sess = tf.Session()
print(sess.run(node3))

  

输出:

Tensor("add:0", shape=(), dtype=string)
b'helloworld'

 

结合上面的代码,现在我们总结一下TensorFlow的工作流程:

(1)构建一个计算图,并初始化一些节点,比如我们的node1和node2。这个时候,并没有开始计算。

(2)创建一个会话。这才是图计算开始的地方,也就是说,仅仅构建一个图,这些图不会自动执行计算操作,而是还要显式提交到一个会话去执行,也就是说,它的执行,是滞后的。

(3)在会话中运行图的计算。把编译通过的合法计算流图传递给会话,这时张量(tensor)才真正“流动(flow)”起来。

(4)关闭会话。当整个图无需再计算时,则关闭会话,以回收系统资源。

 

 

posted @ 2020-11-09 18:32  静悟生慧  阅读(162)  评论(0编辑  收藏  举报