web-dev-qa-db-ja.com

Tensorflowグラフを保存して、集計操作なしでTensorboardで表示する

最適化のために視覚化したい、かなり複雑なTensorflowグラフがあります。変数に注釈を付ける必要なく、Tensorboardで表示するためにグラフを保存するだけの関数を呼び出すことができますか?

私はこれを試しました:

merged = tf.merge_all_summaries()
writer = tf.train.SummaryWriter("/Users/Name/Desktop/tf_logs", session.graph_def)

しかし、出力は生成されませんでした。これは0.6ホイールを使用しています。

これは関連しているようです: グラフの視覚化はseq2seqモデルのテンソルボードに表示されていません

17
jstaker7

効率化のため、 _tf.train.SummaryWriter_ はディスクに非同期的にログを記録します。グラフがログに表示されるようにするには、プログラムが終了する前に、ライターで close() または flush() を呼び出す必要があります。

17
mrry

グラフをGraphDef protobufとしてダンプし、TensorBoardに直接ロードすることもできます。セッションを開始したり、モデルを実行したりせずにこれを行うことができます。

## ... create graph ...
>>> graph_def = tf.get_default_graph().as_graph_def()
>>> graphpb_txt = str(graph_def)
>>> with open('graphpb.txt', 'w') as f: f.write(graphpb_txt)

これにより、モデルの詳細に応じて、次のようなファイルが出力されます。

node {
  name: "W"
  op: "Const"
  attr {
    key: "dtype"
    value {
      type: DT_FLOAT
    }
  }
...
version 1

TensorBoardでは、[アップロード]ボタンを使用してディスクからロードできます。

16
Kevin Robinson

これは私のために働いた:

graph = tf.Graph()
with graph.as_default():
    ... build graph (without annotations) ...
writer = tf.summary.FileWriter(logdir='logdir', graph=graph)
writer.flush()

「--logdir = logdir /」でテンソルボードを起動すると、グラフが自動的にロードされます。 「アップロード」ボタンは必要ありません。

10
Joachim Wagner

明確にするために、これは私が.flush()メソッドを使用して問題を解決した方法です。

ライターを初期化します:

writer = tf.train.SummaryWriter("/home/rob/Dropbox/ConvNets/tf/log_tb", sess.graph_def)

ライターを以下で使用します:

writer.add_summary(summary_str, i)
    writer.flush()
4
Rob Romijnders

これ以外は何も機能しませんでした

# Helper for Converting Frozen graph from Disk to TF serving compatible Model
def get_graph_def_from_file(graph_filepath):
  tf.reset_default_graph()
  with ops.Graph().as_default():
    with tf.gfile.GFile(graph_filepath, 'rb') as f:
      graph_def = tf.GraphDef()
      graph_def.ParseFromString(f.read())
      return graph_def

#let us get the output nodes from the graph
graph_def =get_graph_def_from_file('/coding/ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb')

with tf.Session(graph=tf.Graph()) as session:
    tf.import_graph_def(graph_def, name='')
    writer = tf.summary.FileWriter(logdir='/coding/log_tb/1', graph=session.graph)
    writer.flush()

次に、TB working

#ssh -L 6006:127.0.0.1:6006 root@<remoteip> # for tensor board - in your local machine type 127.0.0.1
!tensorboard --logdir '/coding/log_tb/1'
0
Alex Punnen