6

我需要使用 Tensorflow 分析器来分析一些由于某种原因运行缓慢的代码。不幸的是,有问题的代码使用 tf.Estimator,所以我不知道如何将运行元数据对象注入会话 run() 调用中以获取分析器所需的信息。

我应该怎么办?

4

3 回答 3

4

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,并打开 chromechrome://tracing到可视化!

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

于 2019-12-11T07:28:08.973 回答
2

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中定义

于 2018-10-24T23:33:00.470 回答
0

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

于 2017-11-10T19:50:55.027 回答