66

TensorFlow でさまざまなグラフを使用していくつかのトレーニング セッションを実行しました。私が設定した要約は、トレーニングと検証で興味深い結果を示しています。ここで、要約ログに保存したデータを取得し、いくつかの統計分析を実行して、一般的にプロットし、さまざまな方法で要約データを調べたいと思います。このデータに簡単にアクセスする既存の方法はありますか?

より具体的には、TFEvent レコードを Python に読み込む組み込みの方法はありますか?

これを行う簡単な方法がない場合、TensorFlow はすべてのファイル形式が protobuf files であると述べています。protobufs (限定的) についての私の理解から、TFEvent プロトコル仕様があれば、このデータを抽出できると思います。これをつかむ簡単な方法はありますか?ありがとうございます。

4

9 に答える 9

60

Fabrizioが言うように、TensorBoard は要約ログの内容を視覚化するための優れたツールです。ただし、カスタム分析を実行する場合は、関数を使用して、ログ内のすべてのおよびプロトコル バッファーtf.train.summary_iterator()をループできます。tf.Eventtf.Summary

for summary in tf.train.summary_iterator("/path/to/log/file"):
    # Perform custom processing in here.

tf2 の更新:

from tensorflow.python.summary.summary_iterator import summary_iterator

モジュールレベルは現在デフォルトではインポートされていません。2.0.0-rc2 で

于 2016-05-21T05:21:49.217 に答える
38

TFEvent を読み取るために、イベント プロトコル バッファを生成する Python イテレータを取得できます。

# This example supposes that the events file contains summaries with a
# summary value tag 'loss'.  These could have been added by calling
# `add_summary()`, passing the output of a scalar summary op created with
# with: `tf.scalar_summary(['loss'], loss_tensor)`.
for e in tf.train.summary_iterator(path_to_events_file):
    for v in e.summary.value:
        if v.tag == 'loss' or v.tag == 'accuracy':
            print(v.simple_value)

詳細: summary_iterator

于 2016-10-13T19:23:33.410 に答える
27

以下を簡単に使用できます。

tensorboard --inspect --event_file=myevents.out

または、グラフの特定のイベントのサブセットをフィルタリングする場合:

tensorboard --inspect --event_file=myevents.out --tag=loss

よりカスタムなものを作成したい場合は、

/tensorflow/python/summary/event_file_inspector.py 

イベント ファイルの解析方法を理解する。

于 2016-05-18T17:07:02.900 に答える
13

以下はテンソルフローバージョンの時点で機能し2.0.0-beta1ます:

import os

import tensorflow as tf
from tensorflow.python.framework import tensor_util

summary_dir = 'tmp/summaries'
summary_writer = tf.summary.create_file_writer('tmp/summaries')

with summary_writer.as_default():
  tf.summary.scalar('loss', 0.1, step=42)
  tf.summary.scalar('loss', 0.2, step=43)
  tf.summary.scalar('loss', 0.3, step=44)
  tf.summary.scalar('loss', 0.4, step=45)


from tensorflow.core.util import event_pb2
from tensorflow.python.lib.io import tf_record

def my_summary_iterator(path):
    for r in tf_record.tf_record_iterator(path):
        yield event_pb2.Event.FromString(r)

for filename in os.listdir(summary_dir):
    path = os.path.join(summary_dir, filename)
    for event in my_summary_iterator(path):
        for value in event.summary.value:
            t = tensor_util.MakeNdarray(value.tensor)
            print(value.tag, event.step, t, type(t))

のコードmy_summary_iteratorはからコピーされますtensorflow.python.summary.summary_iterator.py-実行時にインポートする方法がありませんでした。

于 2019-08-04T10:22:24.247 に答える
5

スクリプトserialize_tensorboardを使用できます。これは、logdir を取り込み、すべてのデータを json 形式で書き出します。

便利な Python API としてEventAccumulatorを使用することもできます (これは TensorBoard が使用する API と同じです)。

于 2016-05-24T10:55:56.407 に答える