我是新来TensorFlow。 当我读了现有的文件,我发现术语tensor
让人有些困惑。 因为它,我要澄清以下几个问题:
- 之间是什么关系
tensor
和Variable
,tensor
与tf.constant
, '张'对tf.placeholder
? - 他们是所有类型的张量?
我是新来TensorFlow。 当我读了现有的文件,我发现术语tensor
让人有些困惑。 因为它,我要澄清以下几个问题:
tensor
和Variable
, tensor
tf.constant
, '张'对tf.placeholder
? 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())
你会看到,它创建两个节点Variable
和Variable/read
时, :0
点要在这两个节点获取一个有效的值。 然而Variable:0
具有特殊的ref
类型这意味着它可以被用作输入到突变操作。 Python中调用的结果tf.Variable
是一个Python Variable
对象,并有一些Python魔术替代Variable/read:0
或Variable:0
取决于突变是否是必要的。 由于大多数OPS只有1个端点, :0
被丢弃。 另一个例子是Queue
- close()
方法将创建一个新的Close
,其连接到运算节点Queue
运算。 总结-对像蟒对象的操作Variable
和Queue
映射,以根据使用不同的基础TensorFlow运算节点。
对于像OPS tf.split
或tf.nn.top_k
其创建具有多个端点节点,Python的session.run
来电自动换行输出tuple
或collections.namedtuple
的Tensor
对象可单独取出。
从词汇表 :
张量是类型化的多维数组。 例如,浮动表示与尺寸[批次,高度,宽度,通道]迷你一批图像点数的4 d阵列。
基本上,每个数据是在TensorFlow(因此而得名)张量:
feed_dict
在参数sess.run()
var.assign()
从技术上讲, tf.Variable
不是一个子类tf.Tensor
虽然 tf.constant
只是最基础的张量,其中包含在您创建时给出一个固定值 然而,在图中,每个节点是一个操作,其可具有张量作为输入或输出。
正如其他人已经提到的,是的,他们都是张量。
我理解那些的方式是第一可视化和理解1D,2D,3D,4D,5D和6D张量,如下面的图片。 (来源:knoldus)
现在,在TensorFlow的情况下,你能想象一个计算图类似下面,
在此, Op
。就拿2张量a
和b
作为输入 ; 乘以自身的张量,然后将这些乘法的结果产生结果张量t3
。 而这些乘法和加法 Op
小号发生在计算图的节点。
和这些张量a
和b
可以是恒定的张量,可变张量,或者占位符。 没关系,只要它们是相同的数据类型和兼容形状(或broadcast
能的话)来实现操作。
TensorFlow的中央数据类型是张量。 张量是计算和在TensorFlow的基本数据结构的基础组件。 如果不使用复杂的数学解释,我们可以说张量(以TensorFlow)描述了一个多维数组的数值,零或正维收集的数据,按职级,形状决定,并type.Read更多: 什么是张量在TensorFlow?