TensorFlow如何命名张量?
我不知道这是不是正确的理解: 所有的张量都是从某个运算中派生出来的,运算要么在构造函数中给定一个名称,要么给定特定类型运算的默认名称。如果名称不唯一,TensorFlow会通过追加TensorFlow如何命名张量?,tensorflow,Tensorflow,我不知道这是不是正确的理解: 所有的张量都是从某个运算中派生出来的,运算要么在构造函数中给定一个名称,要么给定特定类型运算的默认名称。如果名称不唯一,TensorFlow会通过追加“\u 1”、“\u 2”等自动处理此问题。使用n个张量的操作会将这些张量命名为“op\u name:0”,“op\u name:1”,…,“op\u name:n-1” 似乎出现了一个问题:如果x是tf.Variable,那么x.name给出了“Variable\u name:0”。这是令人困惑的:对于“变量名”指的
“\u 1”
、“\u 2”
等自动处理此问题。使用n个张量的操作会将这些张量命名为“op\u name:0”
,“op\u name:1”
,…,“op\u name:n-1”
似乎出现了一个问题:如果
x
是tf.Variable
,那么x.name
给出了“Variable\u name:0”
。这是令人困惑的:对于“变量名”
指的是什么?你对张量的命名的观察是绝对正确的:张量的名称是
生成它的操作的名称
冒号(:
),以及
产生张量的操作的输出中该张量的索引李>
因此,名为“foo:2”
的张量是位置2处名为“foo”
的op的输出(索引从零开始)
物体的形状有点奇怪。每个tf.Variable
都包含一个可变张量对象,该对象保存变量的状态(以及一些其他张量)。“Variable”
op(在您的示例中,其名称为“Variable\u name”
)每次作为第0个输出运行时都会“生成”此可变张量,因此可变张量的名称为“Variable\u name:0”
由于tf.Variable
与tf.Tensor
几乎无法区分,因为它可以在相同的位置使用,我们决定使变量名称类似于Tensor名称,因此Variable.name
属性返回可变张量的名称。(这与不能直接用作张量的和对象形成对比(相反,您必须调用它们的方法来创建在其状态下运行的操作),因此它们没有类似张量的名称。)有没有一种简单的方法来生成输出名称?没有pb文件,只有检查点?是否有一个示例显示规则3:生成该张量的操作的输出中该张量的索引?@Alpha Sure:print(tf.split([0,1,2,3,4,5],5,name=“split_op”)[3].name)
,它在“split_op”
的输出中将打印“split_op:3”
@mrry挑剔:应该是打印的(tf.split([0,1,2,3,4],5,name=“split_op”)[3].name)(大小为6的数组不分为5个部分)。谢谢你的评论,顺便说一句,它为我清理了一切。