阅读(5.5k) 书签 (0)

TensorFlow函数教程:tf.profiler.Profiler

2019-02-16 17:21 更新

tf.profiler.Profiler函数

类 Profiler

定义在:tensorflow/python/profiler/model_analyzer.py。

TensorFlow多步分析器。

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

Typical use case:
  # Currently we are only allowed to create 1 profiler per process.
  profiler = Profiler(sess.graph)

  for i in xrange(total_steps):
    if i % 10000 == 0:
      run_meta = tf.RunMetadata()
      _ = sess.run(...,
                   options=tf.RunOptions(
                       trace_level=tf.RunOptions.FULL_TRACE),
                   run_metadata=run_meta)
      profiler.add_step(i, run_meta)

      # Profile the parameters of your model.
      profiler.profile_name_scope(options=(option_builder.ProfileOptionBuilder
          .trainable_variables_parameter()))

      # Or profile the timing of your model operations.
      opts = option_builder.ProfileOptionBuilder.time_and_memory()
      profiler.profile_operations(options=opts)

      # Or you can generate a timeline:
      opts = (option_builder.ProfileOptionBuilder(
              option_builder.ProfileOptionBuilder.time_and_memory())
              .with_step(i)
              .with_timeline_output(filename).build())
      profiler.profile_graph(options=opts)
    else:
      _ = sess.run(...)
  # Auto detect problems and generate advice.
  profiler.advise()

__init__

__init__(
    graph=None,
    op_log=None
)

构造函数。

参数:

  • graph:tf.Graph。如果为“None”或者未启用“eager执行”,请使用默认图形。
  • op_log:可选的。tensorflow :: tfprof :: OpLogProto proto。用于定义额外的op类型。

方法

add_step

add_step(
    step,
    run_meta
)

添加步骤的统计信息。

参数:

  • step:int,用于将一个或多个不同run_meta组合在一起的id 。使用profile_xxx API进行分析时,用户可以使用options中的step id来一起分析这些run_meta。
  • run_meta:RunMetadata proto,包含会话运行的统计信息。

advise

advise(options)

自动检测问题并生成报告。

参数:

  • options:options的一个dict。

返回:

一个包含所有检查者的报告的Advise原型。

profile_graph

profile_graph(options)

通过数据流图组织图形节点的统计信息。

参数:

  • options:options的一个dict。

返回:

记录结果的GraphNodeProto。

profile_name_scope

profile_name_scope(options)

按名称范围组织图形节点的统计信息。

参数:

  • options:options的一个dict。

返回:

记录结果的GraphNodeProto。

profile_operations

profile_operations(options)

描述操作类型的统计信息(例如:MatMul,Conv2D)。

参数:

  • options:options的一个dict。

返回:

记录结果的MultiGraphNodeProto。

profile_python

profile_python(options)

描述Python代码的统计信息。

默认情况下,它显示来自root的调用堆栈。为避免冗余输出,您可以使用options过滤以下选项['show_name_regexes'] = ['.my_code.py.']

参数:

  • options:options的一个dict。

返回:

记录结果的MultiGraphNodeProto。

serialize_to_string

serialize_to_string()

将ProfileProto序列化为二进制字符串。

用户可以通过tfprof命令行或图形界面将其写入文件以进行离线分析。

返回:

ProfileProto二进制字符串。