如何对TensorFlow网络进行分析?

bgs*_*shi 31 tensorflow

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

编辑:Timeline分析器非常棒(/sf/answers/2644212931/).

Sal*_*ali 7

如果要查找TF上每个操作花费的时间,可以使用运行时统计信息在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)
Run Code Online (Sandbox Code Playgroud)

不仅仅是打印它你可以在tensorboard中看到它:

此外,单击节点将显示确切的总内存,计算时间和张量输出大小.

此外,现在tensorflow还有一个调试器.这是一个如何使用它的教程.

[链接示例


小智 2

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

然后,您可以获得有关哪些函数花费最多时间等的配置文件信息。这取决于您,您可以使用gperftools运行并通过pprof进行可视化

由于 TensorFlow 的代码是通过 链接的swig,因此我不能 100% 确定通过 读取配置文件时获取符号有多容易pprof。您也许可以将其指向.so已构建的 swig 文件。

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