web-dev-qa-db-ja.com

Tensorboardファイルをプログラムでどのように読み取りますか?

GUIを起動せずに、Tensorboardログファイルを読み取るためのpythonスクリプトを記述し、損失と精度およびその他の数値データを抽出するにはどうすればよいですかtensorboard --logdir=...

24
mikal94305

TensorBoardのPythonクラスまたはスクリプトを使用して、データを抽出できます。

TensorBoardからデータをエクスポートするにはどうすればよいですか?

他の場所(iPython Notebookなど)で視覚化するためにデータをエクスポートする場合は、それも可能です。 TensorBoardがデータの読み込みに使用する基本クラスに直接依存できます:python/summary/event_accumulator.py(1回の実行からデータをロードする場合)またはpython/summary/event_multiplexer.py(複数の実行からデータを読み込み、整理しておくため)。これらのクラスは、イベントファイルのグループをロードし、TensorFlowクラッシュによって「孤立」したデータを破棄し、タグごとにデータを整理します。

別のオプションとして、スクリプト(tensorboard/scripts/serialize_tensorboard.py)TensorBoardと同じようにlogdirをロードしますが、サーバーを起動する代わりにすべてのデータをjsonとしてディスクに書き込みます。このスクリプトは、テスト用に「偽のTensorBoardバックエンド」を作成するように設定されているため、端が少し荒れています。

EventAccumulator を使用:

# In [1]: from tensorflow.python.summary import event_accumulator  # deprecated
In [1]: from tensorboard.backend.event_processing import event_accumulator

In [2]: ea = event_accumulator.EventAccumulator('events.out.tfevents.x.ip-x-x-x-x',
   ...:  size_guidance={ # see below regarding this argument
   ...:      event_accumulator.COMPRESSED_HISTOGRAMS: 500,
   ...:      event_accumulator.IMAGES: 4,
   ...:      event_accumulator.AUDIO: 4,
   ...:      event_accumulator.SCALARS: 0,
   ...:      event_accumulator.HISTOGRAMS: 1,
   ...:  })

In [3]: ea.Reload() # loads events from file
Out[3]: <tensorflow.python.summary.event_accumulator.EventAccumulator at 0x7fdbe5ff59e8>

In [4]: ea.Tags()
Out[4]: 
{'audio': [],
 'compressedHistograms': [],
 'graph': True,
 'histograms': [],
 'images': [],
 'run_metadata': [],
 'scalars': ['Loss', 'Epsilon', 'Learning_rate']}

In [5]: ea.Scalars('Loss')
Out[5]: 
[ScalarEvent(wall_time=1481232633.080754, step=1, value=1.6365480422973633),
 ScalarEvent(wall_time=1481232633.2001867, step=2, value=1.2162202596664429),
 ScalarEvent(wall_time=1481232633.3877788, step=3, value=1.4660096168518066),
 ScalarEvent(wall_time=1481232633.5749283, step=4, value=1.2405034303665161),
 ScalarEvent(wall_time=1481232633.7419815, step=5, value=0.897326648235321),
 ...]

size_guidance

size_guidance: Information on how much data the EventAccumulator should
  store in memory. The DEFAULT_SIZE_GUIDANCE tries not to store too much
  so as to avoid OOMing the client. The size_guidance should be a map
  from a `tagType` string to an integer representing the number of
  items to keep per tag for items of that `tagType`. If the size is 0,
  all events are stored.
29
user1501961

User1501961の回答を完了するには、スカラーのリストをpandas pd.DataFrame(ea.Scalars('Loss)).to_csv('Loss.csv')を使用して簡単にcsvファイルにエクスポートします

6
mikal94305