2017-10-09 58 views
0

從Python中,我有一個目前在C++環境中使用的凍結的graph.pb。現在輸入張量的數據目前在CPU上進行了預處理,但我想在另一個GraphDef中執行此步驟以在GPU上運行它,但似乎無法找到連接兩個GraphDef之間的節點的方法。連接不同GraphDef的節點

讓我們假設我凍僵圖已輸入/佔位符命名mid,我想用預處理步驟下面連接

tf::GraphDef create_graph_extension() { 
    tf::Scope root = tf::Scope::NewRootScope(); 

    auto a = tf::ops::Const(root.WithOpName("in"), {(float) 23.0, (float) 31.0}); 
    auto b = tf::ops::Identity(root.WithOpName("mid"), a); 

    tf::GraphDef graph; 
    TF_CHECK_OK(root.ToGraphDef(&graph)); 
    return graph; 
} 

我通常使用session->Extend()在同一會話中運行多個圖形,但總是確保他們的節點名稱是唯一的。使用非唯一節點名稱,我希望連接,我得到一個錯誤

Failed to install graph: 
Invalid argument: GraphDef argument to Extend includes node 'mid', which 
was created by a previous call to Create or Extend in this session. 

P.它似乎至少可以用Python(link

回答

0

您可以使用與Python建議的相同想法來實現您想要的功能 - 將一個GraphDef導入另一個並重新映射輸入。

如果你確實使用了C API(其中有stability guarantees),你會想看看:

這些都是在C++ ImportGraphDef功能,您也許能,而不是直接使用(儘管這似乎並不尚未被導出的C++ API的一部分)

希望的基礎上實現的那幫助。