2016-05-18 91 views
14

我在TensorFlow中用不同的圖表進行過幾次培訓。我設置的總結在培訓和驗證中顯示出有趣的結果。現在,我想將我保存在彙總日誌中的數據,進行一些統計分析和總體情節分析,並以不同的方式查看彙總數據。有沒有現成的方法可以輕鬆訪問這些數據?TensorFlow - 從TensorBoard TFEvent文件導入數據?

更具體地說,是否有任何內置的方式將TFEvent記錄讀入Python?

如果沒有簡單的方法來做到這一點,TensorFlow states that all its file formats are protobuf files。從我對protobufs的理解(這是有限的),我想我可以提取這些數據,如果我有TFEvent協議規範。有沒有簡單的方法來得到這個?非常感謝。

回答

12

由於Fabrizio says,TensorBoard是一個偉大的工具,可視化您的彙總日誌的內容。但是,如果你想進行自定義分析,則可以使用tf.train.summary_iterator()功能遍歷所有的日誌中的tf.Eventtf.Summary協議緩衝區的:

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

這個地方有一些漂亮的幫助函數https://programtalk.com/python-examples/tensorflow.train.summary_iterator/ –

9

您可以簡單地使用:

tensorboard --inspect --event_file=myevents.out 

,或者如果你要過濾圖的事件的特定子集:

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

如果你想創造的東西更多的自定義,你可以挖成

/tensorflow/python/summary/event_file_inspector.py 

瞭解如何解析事件文件。

+0

哪個TensorFlow的版本做這項工作有?我正在使用'0.8'。對我而言,總是需要'--logdir',儘管傳入了其他參數,但似乎TensorBoard只是照常運行而忽略了這些參數。另外,'--help'不顯示這兩個參數。另外,爲了確保我不會錯過任何東西,是否應該在終端屏幕上打印某些內容?或者更改TensorBoard頁面顯示的內容?或者是其他東西?謝謝! – golmschenk

+0

繼此之後,我找到了'EventAccumulator'類。加載文件後可以提供彙總值的所有詳細信息。我會更詳細地更新您的答案。 – golmschenk

+0

確實這些參數在張量流量提示中可用。 – fabrizioM

5

您可以使用腳本serialize_tensorboard,這將在logdir並以json格式寫出所有數據。

您也可以使用EventAccumulator作爲方便的Python API(這與TensorBoard使用的API相同)。

+3

從Tensorboard 1.1版開始,serialize_tensorboard腳本不再可用。 – shark8me

10

要讀取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