我使用TensorFlow C ++ API从文件加载图表并执行它。一切都很好,但是我想从内存而不是从文件中加载图形(这样我就可以将图形嵌入到二进制文件中以获得更好的可移植性)。我有变量引用二进制数据(作为unsigned char数组)和数据大小。
这是我目前正在加载图表的方式。
GraphDef graph_def;
ReadBinaryProto(tensorflow::Env::Default(), "./graph.pb", &graph_def);
这样的感觉应该很简单,但大多数讨论都是关于python API的。我确实试图寻找ReadBinaryProto
的来源,但却无法在tensorflow回购中找到它。
答案 0 :(得分:1)
以下内容应该有效:
GraphDef graph_def;
if (!graph_def.ParseFromArray(data, len)) {
// Handle error
}
...
这是因为GraphDef
是google::protobuf::MessageList
的子类,因此会继承a variety of parsing methods
编辑:警告:截至2017年1月,上述代码段仅在序列化图表由于default protocol buffer setting而<64MB时才有效。对于较大的图表,请从ReadBinaryProto
实现中获取灵感
FWIW,ReadBinaryProto
的代码位于tensorflow/core/platform/env.cc