2017-01-24 24 views
1

我想知道如何找到在Python中廣泛使用的TensorFlow方法的C++等價物。例如,哪裏可以找到相當於tf.matmul()?它是否可用?TensorFlow:可用的C++等效的Python函數

我讀main.cclabel_image例子,我注意到,它使用的功能,如Sub()Div(),其單證我不能在C++ API文檔找到。我不知道這些功能來自哪裏。

謝謝。


更新:

這種混亂是非常新TensorFlow r1.0 C++ API的良好的文檔解決。

回答

3

更新:答案對於TensorFlow的1.0之前的版本是非常有意義的。 MBA點,通過直接(官方文檔)的TF團隊提供了一些新的解釋,並有周圍的OPS好重構:-)


許多操作的API的Python執行委託給C++實現。

tensorflow/core/ops下的源代碼包含內核和操作系統。它們是處理通過不同API調用的命令的實際操作。

內核和操作符遵循一種模式。 REGISTER_OP宏將一個C++函數實現「附加」到一個句柄(一個字符串),該句柄在運行時被其中一個API調用。這類建築都有其優點和缺點---超出範圍在這裏:-)

例如tf.matmul,代碼可以很容易地在tensorflow/core/ops/math_ops.ccrepository找到。典型的圖案是這樣的:

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句柄來執行代碼。

+0

在新的r1.0版本的文檔中似乎更清楚:https://www.tensorflow.org/api_docs/cc/ – mhaghighat

+0

的確如此!感謝您的鏈接和您的問題更新。我會相應地更新答案。 –