TensorFlow如何命名张量?

She*_*hao 36 tensorflow

我想知道这是否正确理解:

所有张量都是从某些操作派生的,并且操作在构造函数中被赋予名称,或者给定特定类型操作的默认名称.如果名称不唯一,TensorFlow自动追加处理这个"_1","_2"等有n张量的操作输出的名字,这些张量"op_name:0","op_name:1"..., "op_name:n-1".

似乎出现了一个问题:如果x是a tf.Variable,则x.name给出"variable_name:0".这令人困惑:"variable_name"引用什么?

mrr*_*rry 47

您对Tensor命名的观察是绝对正确的:a的名称Tensor是连接的

  1. 生成它的操作的名称,
  2. 冒号(:)和
  3. 产生它的操作的输出中的张量的索引.

因此,命名的张量"foo:2""foo"在位置2处命名的op的输出(索引从零开始).

命名tf.Variable对象是有点奇怪.每个tf.Variable包含一个可变张量对象,它保存变量的状态(以及一些其他张量).甲"Variable"OP(其名称"variable_name"在你的例子)"生产"每次运行作为其第零输出时间这个可变张量,所以可变张量的名称是"variable_name:0".

由于a tf.Variable几乎与tf.Tensor-in 无法区分,因为它可以在相同的位置使用 - 我们决定使变量名称类似于张量名称,因此该Variable.name属性返回可变张量的名称.(这与tf.QueueBasetf.ReaderBase对象不同,后者不能直接用作张量(而是必须调用它们上的方法来创建对其状态进行操作的操作),因此它们没有类似张量的名称.)