`variable.name`和`variable.op.name`有什么区别?

col*_*ang 6 tensorflow

假设x是一个Variable,我在教程中看到了使用op.name类似tf.scalar_summary(x.op.name, x)的东西.我想知道如果我可以代替x.op.namex.name一般.

这两者有什么区别?它们可以互换吗?

with tf.name_scope('ab'):
    a = tf.Variable(tf.constant(1), name="v1")

a.name
u'ab_1/v1:0'

a.op.name
u'ab_1/v1'
Run Code Online (Sandbox Code Playgroud)

mrr*_*rry 11

现在,Variable.name属性映射到Tensor存储该变量的mutable的名称(主要是因为a Variable可以在任何Tensor预期的地方使用).张量名称是从生成它们的操作的名称(Variable在本例中为op)和该张量所对应的输出的索引生成的.

您可以随意使用tf.scalar_summary(x.name, x)的地方tf.scalar_summary(x.op.name, x),但由此产生的图表都将包含一个多余":<N>"的标记.

  • `Tensor`或`Variable`的`op`属性是指向TensorFlow图中产生张量的节点的指针,或者&mdash;在'Variable`&mdash;的情况下拥有该张量的存储并产生对该存储的可变引用.Ops通常具有更简单的名称,因为TensorFlow图表被表示为命名ops的集合,并且每个张量是基于产生它的op隐式命名的. (4认同)