如何理解TensorFlow中的术语``张量''?
deep-learning
machine-learning
python
tensor
4
0

我是TensorFlow的新手。在阅读现有文档时,我发现tensor一词确实令人困惑。因此,我需要澄清以下问题:

  1. tensorVariabletensor之间是什么关系
    vs. tf.constant ,'张量' tf.placeholder
  2. 它们都是张量类型吗?
参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

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

我理解这些的方式是首先可视化和理解1D,2D,3D,4D,5D和6D张量,如下图所示。 (来源: knoldus

张量定义

现在,在TensorFlow的上下文中,您可以想象一个如下的计算图,

计算图

这里, Op取两个张量ab作为输入 ;将张量与其自身相乘 ,然后这些相乘的结果相加以产生结果张量t3 。这些乘法加法 Op发生在计算图中的节点上。

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

收藏
评论

TensorFlow没有一流的Tensor对象,这意味着在运行时执行的基础图中没有Tensor概念。相反,该图由相互连接的op节点组成,代表操作。一个操作为其输出分配内存,这些输出可用于端点:0:1等,并且您可以将这些端点中的每一个视为Tensor 。如果您具有与nodename:0对应的tensor ,则可以将其值获取为sess.run(tensor)sess.run('nodename:0') 。执行粒度发生在操作级别,因此run方法将执行op,该op将计算所有端点,而不仅仅是:0端点。可能有一个没有输出的Op节点(例如tf.group ),在这种情况下,没有与之关联的张量。没有基础Op节点的张量是不可能的。

您可以通过执行以下操作来检查基础图中发生了什么

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 。由于大多数操作只有1个端点,因此:0被丢弃。另一个例子是Queue - close()方法将创建一个新的Close op节点,该节点连接到Queue op。总而言之-根据用途,对python对象(如VariableQueue映射到不同的基础TensorFlow op节点。

对于像tf.splittf.nn.top_k这样的操作会创建具有多个终结点的节点,Python的session.run调用会自动将输出包装在Tensor对象的tuplecollections.namedtuple ,这些对象可以单独获取。

收藏
评论

词汇表

张量是一种类型化的多维数组。例如,浮点数的4-D数组表示尺寸为[批处理,高度,宽度,通道]的图像的微型批处理。

基本上,每个数据都是TensorFlow中的Tensor(因此得名):

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

但是,在图中,每个节点都是一个操作,可以将张量作为输入或输出。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号