TensorFlow之计算图、张量和会话

TensorFlow中最重要的两个概念:TensorFlow
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

    原文作者:xhades
    原文地址: https://www.jianshu.com/p/219908f652f5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞