从Python,我有一个目前在C ++环境中使用的冻结graph.pb
。现在输入张量的数据当前在CPU上进行了预处理,但我想在另一个GraphDef中执行此步骤以在GPU上运行它,但我似乎找不到在两个节点之间连接节点的方法{ {1}}' S
让我们假设我的冻结图有一个名为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()
P.S。好像至少可以在python中使用link)
答案 0 :(得分:0)
您可以使用与Python建议相同的想法来实现您正在寻找的东西 - 将一个GraphDef导入另一个并重新映射输入。
如果你使用的是C API(有stability guarantees),你可以查看:
TF_GraphImportGraphDef
(与Python中的tf.import_graph_def
调用并行)和
TF_ImportGraphDefOptionsAddInputMapping
与Python中input_map
参数的用途相同。
这些是在C ++ ImportGraphDef
函数之上实现的,您可以直接使用它(尽管它似乎还不是导出的C ++ API的一部分)
希望有所帮助。