我想知道如何找到Python中广泛使用的TensorFlow方法的C ++等价物。例如,哪里可以找到tf.matmul()
的等价物?是否可以使用?
我正在阅读main.cc示例中的label_image,我注意到它使用Sub()
和Div()
等函数,我在C ++ API中找不到它们的文档文档。我想知道这些功能来自哪里。
感谢。
更新
通过新TensorFlow r1.0 C++ API的良好文档解决了这种困惑。
答案 0 :(得分:3)
更新:对于TensorFlow的1.0之前的版本,答案主要是有意义的。 MBA指出TF团队直接提供的一些新解释(官方文档),并且围绕操作进行了很好的重构: - )
Python API将执行委托给许多操作的C ++实现。
tensorflow/core/ops
下的源代码包含内核和操作。它们是处理通过不同API调用的命令的实际操作。
内核和操作遵循一种模式。 REGISTER_OP
宏"附加"一个句柄(一个字符串)的C ++函数实现,它由一个API在运行时调用。这种架构有其优点和缺点 - 超出范围: - )
例如tf.matmul
,可以在repository的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 ++函数)。 Wrappers(例如Python API)调用MatMul
句柄来执行代码。