2017-11-01 18 views
2

私はテンソルフローがかなり新しいです。 GraphとGraphDefの概念の違いを理解したい。TensorflowのグラフとGraphDefの相違点

さらに、protobufファイル(.pb)からロードされたグラフを実行する必要がありますか?

ありがとうございます!

答えて

0

GraphDefはプロトタイプhereです。これはグラフのシリアライズ版です。任意のTensorFlowフロントエンド(Python、R、C++、Java、...)でGraphDefを印刷、保存、または復元することができます。ファイルに保存するときは、通常、ファイル名は.pbで終わるので、.pbファイルにはGraphDefを使用する必要があります。

グラフは抽象的な概念であり、さまざまなフロントエンドに対して異なる形式にすることができます。 Pythonの場合、tf.Graph()はGraphDefと多くのユーティリティを含むPythonオブジェクト(code)を返します。

Pythonでは、tf.import_graph_defを使用してGraphDefを読み込むことができます。

with tf.gfile.GFile(graph_def_pb_file, "rb") as f: 
    graph_def = tf.GraphDef() 
    graph_def.ParseFromString(f.read()) 
    with tf.Graph().as_default() as graph: 
    tf.import_graph_def(graph_def, name="") 
    ... 
0

TF_GraphNextOperationで使用することができ、グラフにReadBinaryProto()で初期化GraphDefを()に変換する方法はあります:ここでは簡単なコード例はありますか?

おかげで、 フレッド

3

GraphまたはComputional Graphはcomputionを提示するtensorflwの中核概念です。テンソルフローを使用するときは、まず自分自身をComputation Graphとし、Graphをテンソルフローに渡します。どうやってするか?ご存じのように、テンソルは、Python、C++、Java、Goなどの多くのフロントプログラミング言語をサポートしており、コア言語はC++で、その他の言語はGraphをC++に変換する方法は?彼らはprotobufと呼ばれるツールを使用して、特定の言語スタブを生成することができます。その場所はGraphDefです。これはGraphのシリアル化されたバージョンです。あなたは(デフォルト)にGraphDefGraphDefを使用して、あなたに*pbファイルを読み込み、bindすべき

1は、私がいるProtobufファイル(.pb)からロードされたグラフを実行する必要があります

Graph、その後、使用following codeのような計算のためにGraphを実行するセッション:

import tensorflow as tf 
from tensorflow.python.platform import gfile 
with tf.Session() as sess: 
    model_filename ='PATH_TO_PB.pb' 
    with gfile.FastGFile(model_filename, 'rb') as f: 
     graph_def = tf.GraphDef() 
     graph_def.ParseFromString(f.read()) 
     g_in = tf.import_graph_def(graph_def) 
LOGDIR='/logs/tests/1/' 
train_writer = tf.summary.FileWriter(LOGDIR) 
train_writer.add_graph(sess.graph) 
関連する問題