我想知道这是否是正确的理解:
所有张量都从某个操作派生而来,或者在构造函数中为操作指定名称,或者为特定类型的操作指定默认名称。如果名称不唯一,TensorFlow自动追加处理这个"_1"
,"_2"
等有操作的N张量输出命名这些张量"op_name:0"
,"op_name:1"
..., "op_name:n-1"
。
似乎出现了一个问题:如果x
是tf.Variable
,则x.name
给出"variable_name:0"
。这令人困惑:"variable_name"
指的是什么?
您对Tensor
命名的观察是绝对正确的:a的名称Tensor
是的串联
:
),以及因此,名为张量的张量"foo:2"
是"foo"
在位置2(索引从零开始)处的op的输出。
该命名的tf.Variable
对象是有点奇怪。每个都tf.Variable
包含一个可变的张量对象,该对象保存变量(和其他一些张量)的状态。甲"Variable"
OP(其名称"variable_name"
在你的例子)“生产”每次运行作为其第零输出时间这个可变张量,所以可变张量的名称是"variable_name:0"
。
由于atf.Variable
与a几乎没有区别tf.Tensor
-因为它可以在相同的地方使用-我们决定使变量名称类似于张量名称,因此该Variable.name
属性返回可变张量的名称。(这与tf.QueueBase
和tf.ReaderBase
对象相反,后者不能直接用作张量(相反,您必须在它们上调用方法以创建在其状态下运行的操作),因此它们没有类似于张量的名称。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句