TensorFlow中的“op”是什么?

13

我创建了一个名为“op testing”的tf占位符:

self.center_words = tf.placeholder(tf.int32, shape=[self.batch_size], name='op testing')
print("Extracting the op", self.center_words.op)

当我打印self.center_words.op时,它会打印出这样的结构:

op: "Placeholder"
attr {
  key: "dtype"
  value {
    type: DT_INT32
  }
}
attr {
  key: "shape"
  value {
    shape {
      dim {
        size: 128
      }
    }
  }
}

这适用于任何TensorFlow变量、函数输出等,那么这个.op是什么?

3个回答

17

TensorFlow 操作,也被称为 Ops,是在 Tensor 对象上执行计算的节点。计算完成后,它们返回零个或多个张量,这些张量可以由图中其他 Ops 用于后续计算。要创建一个操作,您需要在 Python 中调用其构造函数,并提供用于计算(即输入)的 Tensor 参数,以及任何其他必要的信息来正确创建 Op(即属性)。Python 构造函数返回操作的输出(零个或多个 Tensor 对象),并且可以将此输出传递给其他操作或 Session.run


10

简单回答。

操作可以说是tensorflow的核心。

TensorFlow是一个以图形方式表示计算任务的编程系统,图中的节点称为操作(operations的缩写)。 操作接收零个或多个张量(tensor)并执行计算,产生零个或多个张量。

在你的示例中,self.center_words.op 打印出self.center_words的特征,以 json 格式显示。


这是来自TensorFlow核心吗?TensorFlow对象指的是什么?那是某种C++实现吗? - Shamane Siriwardhana
2
这个链接已经失效。 - IntegrateThis

7

简单来说,它会打印特定张量对象的属性。也就是说,它会提供以下信息:

  • 哪个操作负责生成该张量
  • 它的返回类型是什么
  • 它的维度是多少

以及关于所讨论的张量对象的所有可能信息。

最小化实例:

In [74]: with tf.Session() as sess:
    ...:     zer = tf.zeros(shape=(32, 32))
    ...:     print(zer.op)
    ...:     
name: "zeros_11"
op: "Const"
attr {
  key: "dtype"
  value {
    type: DT_FLOAT
  }
}
attr {
  key: "value"
  value {
    tensor {
      dtype: DT_FLOAT
      tensor_shape {
        dim {
          size: 32
        }
        dim {
          size: 32
        }
      }
      float_val: 0.0
    }
  }
}

P.S.: 忽略(zeros_11)中的数字(_11),这个数字只是用来跟踪运行次数的计数器。每次在一个会话中运行时它都会递增。


源代码实现:

代码:tf.Tensor.op
文档:tf.Tensor.op


据我所知,当训练时,tf对象中的递增数值行为是由训练类进行操作的。 - Shamane Siriwardhana
这是来自tensorflow的核心部分吗?Tensorflow对象指的是什么?那是一种C++实现吗? - Shamane Siriwardhana
1
@ShamaneSiriwardhana 添加了代码参考。请查看。 - kmario23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接