如何从内存地址加载张量流图

时间:2017-01-27 08:14:55

标签: tensorflow

我使用TensorFlow C ++ API从文件加载图表并执行它。一切都很好,但是我想从内存而不是从文件中加载图形(这样我就可以将图形嵌入到二进制文件中以获得更好的可移植性)。我有变量引用二进制数据(作为unsigned char数组)和数据大小。

这是我目前正在加载图表的方式。

GraphDef graph_def;
ReadBinaryProto(tensorflow::Env::Default(), "./graph.pb", &graph_def);

这样的感觉应该很简单,但大多数讨论都是关于python API的。我确实试图寻找ReadBinaryProto的来源,但却无法在tensorflow回购中找到它。

1 个答案:

答案 0 :(得分:1)

以下内容应该有效:

GraphDef graph_def;
if (!graph_def.ParseFromArray(data, len)) {
    // Handle error
}
...

这是因为GraphDefgoogle::protobuf::MessageList的子类,因此会继承a variety of parsing methods

编辑:警告:截至2017年1月,上述代码段仅在序列化图表由于default protocol buffer setting而<64MB时才有效。对于较大的图表,请从ReadBinaryProto实现中获取灵感

FWIW,ReadBinaryProto的代码位于tensorflow/core/platform/env.cc