TensorFlow之计算图、张量和会话
2017-12-05 本文已影响101人
xhades
TensorFlow
中最重要的两个概念:Tensor
和 Flow
Tensor
就是张量,可以被简单地理解为多维数组;
Flow
中文翻译成“流”,直观表达张量间通过计算相互转化的过程;
计算图
TensorFlow
(以下简称为TF
)中的计算以图数据流的方式表示,一个图包含一系列表示计算单元的操作对象,以及在图中流动的数据单元以tensor
对象表现。
一些常用方法:
-
tf.get_default_graph()
获取当前默认的计算图 -
tf.Graph()
生成新的计算图 -
tf.Graph().device()
指定运算设备(CPU、GPU)
张量(Tensor
)
在TF
程序中,所有的数据都通过张量(tensor
)的形式来表示,张量可以简单的理解为多维数组。零阶张量表示标量(scalar
)也就是一个数;第一阶张量为向量(vector
)也就是一维数组;第n阶张量可以理解为一个n维数组。
但TF中的张量其实并没有真正保存数字,它保存的是如何得到这些数字的计算过程。
In [5]: a = tf.constant([1,2], name="a")
In [6]: b = tf.constant([3,4], name="b")
In [7]: result = tf.add(a, b)
In [8]: print(result)
Tensor("Add:0", shape=(2,), dtype=int32)
从上面的代码可以看出TF
中的张量和Numpy
中数组的不同,TF计算的结果保存了三个属性:名字(name)、维度(shape)、类型(type)
- 名字
- 维度
- 类型
会话(Session)
引用官方文档的一段话:
A Session
object encapsulates the environment in which Operation
objects are executed, and Tensor
objects are evaluated.
翻译过来即一个Session
对象将操作节点op
封装在一定的环境内运行,同时tensor
对象将被计算求值。
In [3]: # 创建一个会话
In [4]: sess = tf.Session()
In [5]: # 使用创建好的会话得到运算结果
In [6]: sess.run(result)
In [7]: # 关闭会话
In [8]: sess.close()
同时TF
可以通过Python
上下文管理器来使用会话,不需要显示关闭sess