2016-01-06 135 views

回答

2

現在最好的外部方法是用CPU/GPU分析器進行編譯,但這必須通過更改BUILDtensorflow.bzl文件中的選項(不知道在哪裏)手動完成。

然後,您可以獲取的個人資料有關哪些功能是花費大部分時間等,這是給你的,你可以自TensorFlow的代碼是通過swig聯用gperftoolspprof

可視化運行,我m不是100%確定在通過pprof閱讀個人資料時獲得符號的容易程度。您可以將其指向構建的swig .so文件。

試一試,讓我們知道它是否適合你!

2

如果要查找在TF上每次操作花費了多少時間,可以使用runtime statistics在張量板中完成此操作。你需要做這樣的事情(請在上述環節的完整的例子):

run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) 
run_metadata = tf.RunMetadata() 
sess.run(<values_you_want_to_execute>, options=run_options, run_metadata=run_metadata) 
your_writer.add_run_metadata(run_metadata, 'step%d' % i) 

不僅僅是打印出來你可以更好的在tensorboard看到它:

另外,單擊一個節點將顯示確切的總內存,計算時間和張量輸出大小。

現在tensorflow有debugger。這裏是如何使用它的教程。

[1]: https://www.tensorflow.org/get_started/graph_viz#

+0

當前(2017年末,TensorFlow 1.4)獲取方式時間軸使用[ProfilerHook](https://www.tensorflow.org/api_docs/python/tf/train/ProfilerHook)。這適用於tf.Estimator中的MonitoredSessions,其中tf.RunOptions不可用。 – Urs

1

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler

主要特點:

測量模型參數,浮點運算,張量的形狀。

剖析操作執行時間,請求的內存大小和設備放置。

檢查檢查點張量的形狀及其值。

選擇性地分組,過濾器,帳戶和訂單操作。

+0

問題說:*「有沒有一種方法可以計算TensorFlow網絡中每個節點的時間成本?」*您可以通過展示如何使用該工具「計算時間成本」來改善答案嗎? – Pang

+0

太糟糕了,找不到鏈接 –