如何理解TensorFlow术语`tensor`?如何理解TensorFlow术语`tensor`?

2019-05-13 07:56发布

我是新来TensorFlow。 当我读了现有的文件,我发现术语tensor让人有些困惑。 因为它,我要澄清以下几个问题:

  1. 之间是什么关系tensorVariabletensor
    tf.constant , '张'对tf.placeholder
  2. 他们是所有类型的张量?

Answer 1:

TensorFlow没有一流的张量的对象,这意味着没有任何的概念Tensor在底层的图是年代由运行时执行。 代替图由彼此连接的运算节点,代表操作。 的操作对于它的输出,其可在端点上分配内存:0 :1 ,等等,并且可以认为这些端点作为一个的的Tensor 。 如果你有tensor对应nodename:0您可以获取其作为价值sess.run(tensor)sess.run('nodename:0') 执行粒度发生在操作层面,所以run方法将执行运算,将计算所有的端点,而不仅仅是:0端点。 它可能有一个与没有输出的运算节点(像tf.group ),在该情况下,没有与之相关联的张量。 它是不可能有张量没有底层运算节点。

您可以检查做这样的事情在底层图发生了什么

tf.reset_default_graph()
value = tf.constant(1)
print(tf.get_default_graph().as_graph_def())

因此,与tf.constant你得到一个单一的操作节点,你可以使用它拿来sess.run("Const:0")sess.run(value)

类似地, value=tf.placeholder(tf.int32)创建具有名称的常规节点Placeholder ,你可以给它作为feed_dict={"Placeholder:0":2}feed_dict={value:2} 你不能养活并获取在同一个占位符session.run电话,但你可以通过将一个看到的结果tf.identity在顶部节点上获取这一点。

对于可变

tf.reset_default_graph()
value = tf.Variable(tf.ones_initializer()(()))
value2 = value+3
print(tf.get_default_graph().as_graph_def())

你会看到,它创建两个节点VariableVariable/read时, :0点要在这两个节点获取一个有效的值。 然而Variable:0具有特殊的ref类型这意味着它可以被用作输入到突变操作。 Python中调用的结果tf.Variable是一个Python Variable对象,并有一些Python魔术替代Variable/read:0Variable:0取决于突变是否是必要的。 由于大多数OPS只有1个端点, :0被丢弃。 另一个例子是Queue - close()方法将创建一个新的Close ,其连接到运算节点Queue运算。 总结-对像蟒对象的操作VariableQueue映射,以根据使用不同的基础TensorFlow运算节点。

对于像OPS tf.splittf.nn.top_k其创建具有多个端点节点,Python的session.run来电自动换行输出tuplecollections.namedtupleTensor对象可单独取出。



Answer 2:

从词汇表 :

张量是类型化的多维数组。 例如,浮动表示与尺寸[批次,高度,宽度,通道]迷你一批图像点数的4 d阵列。

基本上,每个数据是在TensorFlow(因此而得名)张量:

  • 占位符是张量,其可以喂的值(与feed_dict在参数sess.run()
  • 变量是张量,你可以更新(与var.assign() 从技术上讲, tf.Variable不是一个子类tf.Tensor虽然
  • tf.constant只是最基础的张量,其中包含在您创建时给出一个固定值

然而,在图中,每个节点是一个操作,其可具有张量作为输入或输出。



Answer 3:

正如其他人已经提到的,是的,他们都是张量。

我理解那些的方式是第一可视化和理解1D,2D,3D,4D,5D和6D张量,如下面的图片。 (来源:knoldus)

现在,在TensorFlow的情况下,你能想象一个计算图类似下面,

在此, Op 。就拿2张量ab作为输入 ; 乘以自身的张量,然后这些乘法的结果产生结果张量t3 。 而这些乘法加法 Op小号发生在计算图的节点。

和这些张量ab可以是恒定的张量,可变张量,或者占位符。 没关系,只要它们是相同的数据类型和兼容形状(或broadcast能的话)来实现操作。



Answer 4:

TensorFlow的中央数据类型是张量。 张量是计算和在TensorFlow的基本数据结构的基础组件。 如果不使用复杂的数学解释,我们可以说张量(以TensorFlow)描述了一个多维数组的数值,零或正维收集的数据,按职级,形状决定,并type.Read更多: 什么是张量在TensorFlow?



文章来源: How to understand the term `tensor` in TensorFlow?