在文章(2)中分析了ConstantOp类的构造函数。本文介绍Compute函数。ConstantOp类的Compute函数,可以说是非常简单,因为构造函数已经几乎将所有的工作都完成了。Compute函数的定义在tensorflow/core/kernels/constant_op.cc文件中。
void ConstantOp::Compute(OpKernelContext* ctx) {
ctx->set_output(0, tensor_);
if (TF_PREDICT_FALSE(ctx->track_allocations())) {
ctx->record_persistent_memory_allocation(tensor_.AllocatedBytes());
}
}
上面代码的主要逻辑是第2行,它的作用是将ConstantOp对象的第0个输出设置为tensor_成员变量的值。在文章(1)中,我们已经说过,ConstantOp对象只有一个输出。而通过文章(2)的介绍,我们知道,这个输出是一个Tensor类型的变量。事实上,TensorFlow的任何操作的输入和输出都是Tensor类型的变量。当然,有的操作除了输入输出之外,还有一些非Tensor类型的变量作为参数。但是,这些非Tensor类型的变量,只