TensorFlow:可用的Python函数的C++等价物

TensorFlow: Available C++ equivalents of Python functions

本文关键字:函数 C++ 等价物 Python TensorFlow      更新时间:2023-10-16

我想知道如何找到Python中广泛使用的TensorFlow方法的C++等价物。例如,在哪里可以找到tf.matmul()的等价物?有空吗?

我在阅读label_image示例中的main.cc,注意到它使用了Sub()Div()等函数,这些函数的文档在C++API文档中找不到。我想知道这些功能是从哪里来的。

谢谢。


更新:

新的TensorFlow r1.0 C++API的良好文档极大地解决了这种混乱。

Update:这个答案对于TensorFlow的1.0之前的版本非常有意义。MBA指出了TF团队直接提供的一些新解释(官方文档),并且围绕操作进行了很好的重构:-)


Python API将执行委托给许多操作的C++实现。

tensorflow/core/ops下的源代码包含内核和操作。它们是处理通过不同API调用的命令的实际操作。

内核和操作遵循一种模式。REGISTER_OP宏将C++函数实现"附加"到一个句柄(字符串),该句柄在运行时由其中一个API调用。这种体系结构有其优点和缺点——超出了这里的范围:-)

例如tf.matmul,代码可以很容易地在存储库的tensorflow/core/ops/math_ops.cc中找到。典型的模式看起来像:

REGISTER_OP("MatMul")
.Input("a: T")
.Input("b: T")
.Output("product: T")
.Attr("transpose_a: bool = false")
.Attr("transpose_b: bool = false")
.Attr("T: {half, float, double, int32, complex64, complex128}")
.SetShapeFn(shape_inference::MatMulShape)
.Doc("[Edited: some doc string.]");

其中执行tf.matmul的实际代码在函数shape_inference::MatMulShape("函子",即C++函数)中。包装器(例如Python API)调用MatMul句柄来执行代码。