使用带有tf.Estimator的Tensorflow分析器

时间:2017-11-10 01:15:39

标签: python tensorflow tensorflow-estimator

我需要使用Tensorflow分析器来分析一些由于某种原因而运行缓慢的代码。不幸的是,有问题的代码使用了tf.Estimator,因此我无法弄清楚如何将run元数据对象注入session run()调用以获取探查器所需的信息。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

with tf.contrib.tfprof.ProfileContext('/tmp/train_dir', dump_steps=[10]) as pctx: estimator.train() # any thing you want to profile

然后您将在/tmp/train_dir/profile_10上获得一个文件

参数在https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/profiler/profile_context.py

中定义

答案 1 :(得分:1)

tf.estimator使用tf.train.ProfilerHook有用!

只需在ProfilerHook钩中添加一个TrainSpec

hook = tf.train.ProfilerHook(
    save_steps=20,
    output_dir=os.path.join(args.model_dir, "tracing"),
    show_dataflow=True,
    show_memory=True)
hooks = [hook]
train_spec = tf.estimator.TrainSpec(
    hooks=hooks,
    input_fn=lambda: input_fn())

然后,您可以在timeline-{}.json中获得诸如model_dir/tracing之类的跟踪文件,并打开镶边chrome://tracing以显示!

参考: https://stackoverflow.com/a/48278275/6494418

答案 2 :(得分:0)

使用ProfileContext,如下所述:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler。这使您无需访问会话即可进行分析。