【TensorFlow动手玩】基本概念: Tensor, Operation, Graph

原创 2016年11月04日 20:07:30

总则

Tensorflow是

  • 异步的:一处写,一处读,一处训练
  • 全局的:操作添加到全局的Graph中,监控添加到全局的summary中,参数/损失添加到全局的collection中
  • 符号式的:创建时没有具体值,运行时才传入

Tensorflow的三大核心结构:TensorOperationGraph

Tensor

Tensor可以看做一种符号化的句柄,指向操作的运算结果。在执行后返回基本类型、numpy.ndarray、或者其组成的list, tuple等。

创建Tensor

可以用函数(参看constant_op文档)创建常数、随机或者数列式的Tensor

x = tf.random_normal([2, 3], stddev=0.35, name = "weights")

Tensor的内容

常用数据顺序:batch*height*width*channel

Tensor的rank指维度,rank=0是标量。

可以用下标访问Tensor中的元素,注意y也是一个符号型运算结果。

y = x[0][2]

注意,Tensor对矩阵形状要求严格。长度为1的维度不会被自动缩减。

x1 = tf.constant(1.0, shape=[])      # 0D
x2 = tf.constant(1.0, shape=[1])      # 1D
x3 = tf.constant(1.0, shape=[1,1])    # 2D

如果你想创建一个标量Tensor,在指定shape时应该传入[],而不是[1]

Tensor的形状

有两种方法获得Tensor输出结果的形状。

静态方法:直接根据创建Tensor的方法推理出输出形状。

x = tf.random_normal([2, 3])
print(x.get_shape())

动态方法:创建一个获取形状的新Tensor,运行得到结果。

x = tf.random_normal([2, 3])
s = tf.shape(x)
sess = tf.Session()
print(sess.run(s))

注:Tensor据说在近期会被更名为Ouput。纯.吃多撑的。

Operation

Operation表示一种符号化的运算过程,是TensorFlow中的基本单元,即图中的节点。它的输入和输出都是Tensor

考虑以下代码:

x = tf.constant(1, shape=[1, 2])
y = tf.constant(2, shape=[1, 2])
z = tf.add(x, y)

其中包含了三个Operation
- 给x赋常数值
- 给y赋常数值
- x,y相加得到z

Operation没法从函数返回值中得到,可以用如下方法,从全局graph中查看当前所有Operation

g = tf.get_default_graph()
opts = g.get_operations()

Graph

TensorOperation都是Graph中的对象。Operation是图的节点,Tensor是图的边上流动的数据。
这里写图片描述

对象的.graph成员表示其所属的Graph,如无特别指定,创建的TensorOperation都在默认图中。

g1 = x.graph
g2 = opts[0].graph
g3 = tf.get_default_graph()
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

TensorFlow 基本使用

Tensorflow的基本使用简介。
  • YhL_Leo
  • YhL_Leo
  • 2016年02月02日 13:35
  • 36153

TensorFlow 从入门到精通(六):tensorflow.nn 详解

看过前面的例子,会发现实现深度神经网络需要使用 tensorflow.nn 这个核心模块。我们通过源码来一探究竟。# Copyright 2015 Google Inc. All Rights Res...

TensorFlow学习(三):Graph和Session

之前讲完变量常量等等基本量的操作,意味着最基本的东西都有了,然后接下来很重要的就是那些量和操作怎么组成更大的集合,怎么运行这个集合。这些就是计算图谱graph和Session的作用了。IV.Graph...

tensorflow 中Graphs的相关文档

2.1 建立图(Building Graphs) 本节主要介绍建立tensorflow图的相关类或函数 * 核心图的数据结构(Core graph data structures) ...

【Tensorflow】tf.cast 类型转换 函数

tf.cast(x, dtype, name=None) 此函数是类型转换函数 参数 x:输入dtype:转换目标类型name:名称 返回:Tensor 例: # tensor `a` i...

TensorLayer 当 LSTM 设为 state_is_tuple 时该如何迭代。

代码分析,TensorLayer 如何解决 TensorFlow 中当 LSTM state is tuple 的迭代问题?
  • zsdh123
  • zsdh123
  • 2016年08月10日 18:16
  • 1511

三十六、深入理解tensorflow的session和graph

tensorflow作为一个基于图结构的深度学习框架,内部通过session实现图和计算内核的交互,那么这个图是什么样的结构,session的工作原理又是什么样的呢?我们通过几段代码来深入理解一下 ...

关于TensorFlow中的多图(Multiple Graphs)

一、简介 TensorFlow中的图(Graph)是众多操作(Ops)的集合,它描述了具体的操作类型与各操作之间的关联。在实际应用中,我们可以直接把图理解为神经网络(Neural Network)结构...

tensorflow原理

要点   使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务.在被称之为 会话 (Session) 的上下文 (context) 中...

Tensorflow一些常用基本概念与函数(2)

摘要:本文主要对tf的一些常用概念与方法进行描述。为‘Tensorflow一些常用基本概念与函数’系列之二。...
  • lenbow
  • lenbow
  • 2016年08月11日 11:38
  • 29295
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【TensorFlow动手玩】基本概念: Tensor, Operation, Graph
举报原因:
原因补充:

(最多只允许输入30个字)