如何对TensorFlow网络进行分析?

时间:2016-01-06 09:29:37

标签: tensorflow

有没有办法计算TensorFlow网络中每个节点的时间成本? 我发现很难找到性能瓶颈。

编辑:Timeline探查器非常棒(https://stackoverflow.com/a/37774470/3632556)。

3 个答案:

答案 0 :(得分:6)

如果要查找TF上每个操作花费的时间,可以使用runtime statistics在tensorboard中执行此操作。您将需要执行以下操作(请查看上述链接中的完整示例):

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。这是一个如何使用它的教程。

[Example from link

答案 1 :(得分:2)

现在最好的外部方法是使用CPU / GPU分析器进行编译,但这必须通过更改BUILDtensorflow.bzl文件中的选项(不确定位置)来手动完成。

然后,您可以获取有关哪些功能花费最多时间等的个人资料信息。这取决于您,您可以使用gperftools进行操作并按pprof进行可视化

由于TensorFlow的代码是通过swig链接的,因此我不能100%确定在通过pprof阅读个人资料时获取符号是多么容易。您可以将其指向已构建的swig .so文件。

尝试一下,让我们知道它是否适合您!

答案 2 :(得分:0)

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

主要特点:

测量模型参数,浮点运算,张量形状。

剖析操作执行时间,请求的内存大小和设备放置。

检查检查站张量&#39;形状和它们的价值观。

有选择地分组,过滤,帐户和订购操作。