我正在使用 TensorFlow C++ API 从文件加载图形并执行它。一切都工作得很好,但我想从内存而不是从文件加载图形(以便我可以将图形嵌入到二进制文件中以获得更好的可移植性)。我有引用二进制数据(作为无符号字符数组)和数据大小的变量。
这就是我当前加载图表的方式。
GraphDef graph_def;
ReadBinaryProto(tensorflow::Env::Default(), "./graph.pb", &graph_def);
感觉这应该很简单,但大部分讨论都是关于 python API 的。我确实尝试寻找 ReadBinaryProto
的源代码,但无法在tensorflow 存储库中找到它。
最佳答案
以下应该有效:
GraphDef graph_def;
if (!graph_def.ParseFromArray(data, len)) {
// Handle error
}
...
这是因为 GraphDef
是 google::protobuf::MessageList
的子类,因此继承 a variety of parsing methods
编辑:警告:截至 2017 年 1 月,上面的代码片段仅在序列化图 <64MB 时才有效,因为 default protocol buffer setting 。对于更大的图表,请从 ReadBinaryProto
的实现
FWIW,ReadBinaryProto
的代码位于 tensorflow/core/platform/env.cc
关于tensorflow - 如何从内存地址加载 tensorflow 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889453/