2017-01-27 10 views
0

TensorFlow C++ APIを使用して、ファイルからグラフを読み込んで実行しています。すべてがうまくいっていますが、ファイルからではなくメモリからグラフをロードしたいので、移植性を高めるためにグラフをバイナリに埋め込むことができます。私はバイナリデータ(符号なしchar配列として)とデータのサイズの両方を参照する変数を持っています。テンソルフローグラフをメモリアドレスからロードする方法

グラフの読み込み方法は次のとおりです。

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

このような気がするはずですが、議論の大部分はPython APIです。私はReadBinaryProtoのソースを探してみましたが、テンソルフローレポで見つけることができませんでした。

答えて

0

次は動作するはずです:

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

+0

であり、これは非常に有用であったが、グラフ(64MiB <)非常に小さい場合にのみ機能します。私のグラフははるかに大きいので、 'CodedInputStream'を作成することでそれを動作させることができました(' ReadBinaryProto'と同様です)。あなたの答えをこれらの詳細で更新して、他の人が完全な解決策を持つことができますか? –

+0

完了しました。ありがとうございます。 – ash

関連する問題