tf.profiler

2022-09-03 21:58:58 浏览数 (1)

1、类

  • class AdviceProto
  • class GraphNodeProto
  • class MultiGraphNodeProto
  • class OpLogProto
  • class ProfileOptionBuilder: 用于分析API的选项生成器。
  • class Profiler: TensorFlow多步骤的分析器。

2、函数

  • advise(...): 自动配置和建议。
  • profile(...): 概要文件的模型。
  • write_op_log(...): Log提供了'op_log',并在下面添加了额外的模型信息。

3、tf.profiler.AdviceProto

1、__init__

代码语言:javascript复制
__init__(**kwargs)

2、性质

checkers

repeated CheckersEntry checkers

3、ByteSize

代码语言:javascript复制
ByteSize()

4、Clear

代码语言:javascript复制
Clear()

5、ClearField

代码语言:javascript复制
ClearField(field_name)

6、DiscardUnknownFields

代码语言:javascript复制
DiscardUnknownFields()

7、FindInitializationErrors

代码语言:javascript复制
FindInitializationErrors()

查找未初始化的必需字段。

返回值:

  • 字符串列表。每个字符串是从顶级消息到未初始化字段的路径,例如。“foo.bar [5] .baz”。

8、FromString

代码语言:javascript复制
@staticmethod
FromString(s)

9、HasField

代码语言:javascript复制
HasField(field_name)

10、IsInitialized

代码语言:javascript复制
IsInitialized(errors=None)

检查是否设置了消息的所有必需字段。

参数:

  • errors:如果提供了一个列表,它将填充所有缺少的必需字段的字段路径。

返回值:

  • 如果指定的消息已设置所有必需字段,则为True。

11、ListFields

代码语言:javascript复制
ListFields()

12、MergeFrom

代码语言:javascript复制
MergeFrom(msg)

13、MergeFromString

代码语言:javascript复制
MergeFromString(serialized)

14、RegisterExtension

代码语言:javascript复制
@staticmethod
RegisterExtension(extension_handle)

15、SerializePartialToString

代码语言:javascript复制
SerializePartialToString(**kwargs)

16、SerializeToString

代码语言:javascript复制
SerializeToString(**kwargs)

17、SetInParent

代码语言:javascript复制
SetInParent()

将_cached_byte_size_dirty位设置为true,并将其传播给侦听器(如果这是状态更改)。

18、UnknownFields

代码语言:javascript复制
UnknownFields()

19、WhichOneof

代码语言:javascript复制
WhichOneof(oneof_name)

返回其中一个或None中当前设置字段的名称。

20、__eq__

代码语言:javascript复制
__eq__(other)

4、tf.profiler.AdviceProto.Checker

1、__init__

代码语言:javascript复制
__init__(**kwargs)

2、ByteSize

代码语言:javascript复制
ByteSize()

3、Clear

代码语言:javascript复制
Clear()

4、ClearField

代码语言:javascript复制
ClearField(field_name)

5、DiscardUnknownFields

代码语言:javascript复制
DiscardUnknownFields()

6、FindInitializationErrors

代码语言:javascript复制
FindInitializationErrors()

查找未初始化的必需字段。

返回值:

  • 字符串列表。每个字符串是从顶级消息到未初始化字段的路径,例如。“foo.bar [5] .baz”。

7、FromString

代码语言:javascript复制
@staticmethod
FromString(s)

8、HasField

代码语言:javascript复制
HasField(field_name)

9、IsInitialized

代码语言:javascript复制
IsInitialized(errors=None)

检查是否设置了消息的所有必需字段。

参数:

  • errors:如果提供了一个列表,它将填充所有缺少的必需字段的字段路径。

返回值:

  • 如果指定的消息已设置所有必需字段,则为True。

10、ListFields

代码语言:javascript复制
ListFields()

11、MergeFrom

代码语言:javascript复制
MergeFrom(msg)

12、MergeFromString

代码语言:javascript复制
MergeFromString(serialized)

13、RegisterExtension

代码语言:javascript复制
@staticmethod
RegisterExtension(extension_handle)

14、SerializePartialToString

代码语言:javascript复制
SerializePartialToString(**kwargs)

15、SerializeToString

代码语言:javascript复制
SerializeToString(**kwargs)

16、SetInParent

代码语言:javascript复制
SetInParent()

将_cached_byte_size_dirty位设置为true,并将其传播给侦听器(如果这是状态更改)。

17、UnknownFields

代码语言:javascript复制
UnknownFields()

18、WhichOneof

代码语言:javascript复制
WhichOneof(oneof_name)

返回其中一个或None中当前设置字段的名称。

19、__eq__

代码语言:javascript复制
__eq__(other)

5、tf.profiler.AdviceProto.CheckersEntry

1、__init__

代码语言:javascript复制
__init__(**kwargs)

2、ByteSize

代码语言:javascript复制
ByteSize()

3、Clear

代码语言:javascript复制
Clear()

4、ClearField

代码语言:javascript复制
ClearField(field_name)

5、DiscardUnknownFields

代码语言:javascript复制
DiscardUnknownFields()

6、FindInitializationErrors

代码语言:javascript复制
FindInitializationErrors()

查找未初始化的必需字段。

返回值:

  • 字符串列表。每个字符串是从顶级消息到未初始化字段的路径,例如。“foo.bar [5] .baz”。

7、FromString

代码语言:javascript复制
@staticmethod
FromString(s)

8、HasField

代码语言:javascript复制
HasField(field_name)

9、IsInitialized

代码语言:javascript复制
IsInitialized(errors=None)

检查是否设置了消息的所有必需字段。

参数:

  • errors:如果提供了一个列表,它将填充所有缺少的必需字段的字段路径。

返回值:

  • 如果指定的消息已设置所有必需字段,则为True。

10、ListFields

代码语言:javascript复制
ListFields()

11、MergeFrom

代码语言:javascript复制
MergeFrom(msg)

12、MergeFromString

代码语言:javascript复制
MergeFromString(serialized)

13、RegisterExtension

代码语言:javascript复制
@staticmethod
RegisterExtension(extension_handle)

14、SerializePartialToString

代码语言:javascript复制
SerializePartialToString(**kwargs)

15、SerializeToString

代码语言:javascript复制
SerializeToString(**kwargs)

16、SetInParent

代码语言:javascript复制
SetInParent()

将_cached_byte_size_dirty位设置为true,并将其传播给侦听器(如果这是状态更改)。

17、UnknownFields

代码语言:javascript复制
UnknownFields()

18、WhichOneof

代码语言:javascript复制
WhichOneof(oneof_name)

返回其中一个或None中当前设置字段的名称。

19、__eq__

代码语言:javascript复制
__eq__(other)

6、tf.profiler.advise

自动配置和建议。

代码语言:javascript复制
tf.profiler.advise(
    graph=None,
    run_meta=None,
    options=_DEFAULT_ADVISE_OPTIONS
)

构建概要文件并自动检查各个方面的异常。更多信息:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/README.md

参数:

  • graph:tf.Graph。如果没有启用None和eager执行,则使用默认图。
  • run_meta:可选tensorflow。RunMetadata原型。支持运行时信息分析(如时间和内存)是必要的。
  • options:参见上面的ALL_ADVICE示例。默认检查一切。

返回值:

  • 返回AdviceProto原型

7、tf.profiler.GraphNodeProto

1、__init__

代码语言:javascript复制
__init__(**kwargs)

2、ByteSize

代码语言:javascript复制
ByteSize()

3、Clear

代码语言:javascript复制
Clear()

4、ClearField

代码语言:javascript复制
ClearField(field_name)

5、DiscardUnknownFields

代码语言:javascript复制
DiscardUnknownFields()

6、FindInitializationErrors

代码语言:javascript复制
FindInitializationErrors()

查找未初始化的必需字段。

返回值:

  • 字符串列表。每个字符串是从顶级消息到未初始化字段的路径,例如。“foo.bar [5] .baz”。

7、FromString

代码语言:javascript复制
@staticmethod
FromString(s)

8、HasField

代码语言:javascript复制
HasField(field_name)

9、IsInitialized

代码语言:javascript复制
IsInitialized(errors=None)

检查是否设置了消息的所有必需字段。

参数:

  • errors:如果提供了一个列表,它将填充所有缺少的必需字段的字段路径。

返回值:

  • 如果指定的消息已设置所有必需字段,则为True。

10、ListFields

代码语言:javascript复制
ListFields()

11、MergeFrom

代码语言:javascript复制
MergeFrom(msg)

12、MergeFromString

代码语言:javascript复制
MergeFromString(serialized)

13、RegisterExtension

代码语言:javascript复制
@staticmethod
RegisterExtension(extension_handle)

14、SerializePartialToString

代码语言:javascript复制
SerializePartialToString(**kwargs)

15、SerializeToString

代码语言:javascript复制
SerializeToString(**kwargs)

16、SetInParent

代码语言:javascript复制
SetInParent()

将_cached_byte_size_dirty位设置为true,并将其传播给侦听器(如果这是状态更改)。

17、UnknownFields

代码语言:javascript复制
UnknownFields()

18、WhichOneof

代码语言:javascript复制
WhichOneof(oneof_name)

返回其中一个或None中当前设置字段的名称。

19、__eq__

代码语言:javascript复制
__eq__(other)

8、tf.profiler.GraphNodeProto.InputShapesEntry

1、__init__

代码语言:javascript复制
__init__(**kwargs)

2、ByteSize

代码语言:javascript复制
ByteSize()

3、Clear

代码语言:javascript复制
Clear()

4、ClearField

代码语言:javascript复制
ClearField(field_name)

5、DiscardUnknownFields

代码语言:javascript复制
DiscardUnknownFields()

6、FindInitializationErrors

代码语言:javascript复制
FindInitializationErrors()

查找未初始化的必需字段。

返回值:

  • 字符串列表。每个字符串是从顶级消息到未初始化字段的路径,例如。“foo.bar [5] .baz”。

7、FromString

代码语言:javascript复制
@staticmethod
FromString(s)

8、HasField

代码语言:javascript复制
HasField(field_name)

9、IsInitialized

代码语言:javascript复制
IsInitialized(errors=None)

检查是否设置了消息的所有必需字段。

参数:

  • errors:如果提供了一个列表,它将填充所有缺少的必需字段的字段路径。

返回:

  • 如果指定的消息已设置所有必需字段,则为True。

10、ListFields

代码语言:javascript复制
ListFields()

11、MergeFrom

代码语言:javascript复制
MergeFrom(msg)

12、MergeFromString

代码语言:javascript复制
MergeFromString(serialized)

13、RegisterExtension

代码语言:javascript复制
@staticmethod
RegisterExtension(extension_handle)

14、SerializePartialToString

代码语言:javascript复制
SerializePartialToString(**kwargs)

15、SerializeToString

代码语言:javascript复制
SerializeToString(**kwargs)

16、SetInParent

代码语言:javascript复制
SetInParent()

将_cached_byte_size_dirty位设置为true,并将其传播给侦听器(如果这是状态更改)。

17、UnknownFields

代码语言:javascript复制
UnknownFields()

18、WhichOneof

代码语言:javascript复制
WhichOneof(oneof_name)

返回其中一个或None中当前设置字段的名称。

19、__eq__

代码语言:javascript复制
__eq__(other)

9、tf.profiler.MultiGraphNodeProto

1、__init__

代码语言:javascript复制
__init__(**kwargs)

2、ByteSize

代码语言:javascript复制
ByteSize()

3、Clear

代码语言:javascript复制
Clear()

4、ClearField

代码语言:javascript复制
ClearField(field_name)

5、DiscardUnknownFields

代码语言:javascript复制
DiscardUnknownFields()

6、FindInitializationErrors

代码语言:javascript复制
FindInitializationErrors()

查找未初始化的必需字段。

返回值:

  • 字符串列表。每个字符串是从顶级消息到未初始化字段的路径,例如。“foo.bar [5] .baz”。

7、FromString

代码语言:javascript复制
@staticmethod
FromString(s)

8、HasField

代码语言:javascript复制
HasField(field_name)

9、IsInitialized

代码语言:javascript复制
IsInitialized(errors=None)

检查是否设置了消息的所有必需字段。

参数:

  • errors:如果提供了一个列表,它将填充所有缺少的必需字段的字段路径。

返回值:

  • 如果指定的消息已设置所有必需字段,则为True。

10、ListFields

代码语言:javascript复制
ListFields()

11、MergeFrom

代码语言:javascript复制
MergeFrom(msg)

12、MergeFromString

代码语言:javascript复制
MergeFromString(serialized)

13、RegisterExtension

代码语言:javascript复制
@staticmethod
RegisterExtension(extension_handle)

14、SerializePartialToString

代码语言:javascript复制
SerializePartialToString(**kwargs)

15、SerializeToString

代码语言:javascript复制
SerializeToString(**kwargs)

16、SetInParent

代码语言:javascript复制
SetInParent()

将_cached_byte_size_dirty位设置为true,并将其传播给侦听器(如果这是状态更改)。

17、UnknownFields

代码语言:javascript复制
UnknownFields()

18、WhichOneof

代码语言:javascript复制
WhichOneof(oneof_name)

返回其中一个或None中当前设置字段的名称。

19、__eq__

代码语言:javascript复制
__eq__(other)

10、tf.profiler.OpLogProto

1、__init__

代码语言:javascript复制
__init__(**kwargs)

2、ByteSize

代码语言:javascript复制
ByteSize()

3、Clear

代码语言:javascript复制
Clear()

4、ClearField

代码语言:javascript复制
ClearField(field_name)

5、DiscardUnknownFields

代码语言:javascript复制
DiscardUnknownFields()

6、FindInitializationErrors

代码语言:javascript复制
FindInitializationErrors()

查找未初始化的必需字段。

返回值:

  • 字符串列表。每个字符串是从顶级消息到未初始化字段的路径,例如。“foo.bar [5] .baz”。

7、FromString

代码语言:javascript复制
@staticmethod
FromString(s)

8、HasField

代码语言:javascript复制
HasField(field_name)

9、IsInitialized

代码语言:javascript复制
IsInitialized(errors=None)

检查是否设置了消息的所有必需字段。

参数:

  • errors:如果提供了一个列表,它将填充所有缺少的必需字段的字段路径。

返回值:

  • 如果指定的消息已设置所有必需字段,则为True。

10、ListFields

代码语言:javascript复制
ListFields()

11、MergeFrom

代码语言:javascript复制
MergeFrom(msg)

12、MergeFromString

代码语言:javascript复制
MergeFromString(serialized)

13、RegisterExtension

代码语言:javascript复制
@staticmethod
RegisterExtension(extension_handle)

14、SerializePartialToString

代码语言:javascript复制
SerializePartialToString(**kwargs)

15、SerializeToString

代码语言:javascript复制
SerializeToString(**kwargs)

16、SetInParent

代码语言:javascript复制
SetInParent()

将_cached_byte_size_dirty位设置为true,并将其传播给侦听器(如果这是状态更改)。

17、UnknownFields

代码语言:javascript复制
UnknownFields()

18、WhichOneof

代码语言:javascript复制
WhichOneof(oneof_name)

返回其中一个或None中当前设置字段的名称。

19、__eq__

代码语言:javascript复制
__eq__(other)

11、tf.profiler.OpLogProto.IdToStringEntry

1、__init__

代码语言:javascript复制
__init__(**kwargs)

2、ByteSize

代码语言:javascript复制
ByteSize()

3、Clear

代码语言:javascript复制
Clear()

4、ClearField

代码语言:javascript复制
ClearField(field_name)

5、DiscardUnknownFields

代码语言:javascript复制
DiscardUnknownFields()

6、FindInitializationErrors

代码语言:javascript复制
FindInitializationErrors()

查找未初始化的必需字段。

返回值:

  • 字符串列表。每个字符串是从顶级消息到未初始化字段的路径,例如。“foo.bar [5] .baz”。

7、FromString

代码语言:javascript复制
@staticmethod
FromString(s)

8、HasField

代码语言:javascript复制
HasField(field_name)

9、IsInitialized

代码语言:javascript复制
IsInitialized(errors=None)

检查是否设置了消息的所有必需字段。

参数:

  • errors:如果提供了一个列表,它将填充所有缺少的必需字段的字段路径。

返回值:

  • 如果指定的消息已设置所有必需字段,则为True。

10、ListFields

代码语言:javascript复制
ListFields()

11、MergeFrom

代码语言:javascript复制
MergeFrom(msg)

12、MergeFromString

代码语言:javascript复制
MergeFromString(serialized)

13、RegisterExtension

代码语言:javascript复制
@staticmethod
RegisterExtension(extension_handle)

14、SerializePartialToString

代码语言:javascript复制
SerializePartialToString(**kwargs)

15、SerializeToString

代码语言:javascript复制
SerializeToString(**kwargs)

16、SetInParent

代码语言:javascript复制
SetInParent()

将_cached_byte_size_dirty位设置为true,并将其传播给侦听器(如果这是状态更改)。

17、UnknownFields

代码语言:javascript复制
UnknownFields()

18、WhichOneof

代码语言:javascript复制
WhichOneof(oneof_name)

返回其中一个或None中当前设置字段的名称。

19、__eq__

代码语言:javascript复制
__eq__(other)

12、tf.profiler.profile

概要文件的模型。

代码语言:javascript复制
tf.profiler.profile(
    graph=None,
    run_meta=None,
    op_log=None,
    cmd='scope',
    options=_DEFAULT_PROFILE_OPTIONS
)

教程和示例可以在https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/README.md找到

参数:

  • graph:tf.Graph。如果没有启用None和eager执行,则使用默认图。
  • run_meta:可选tensorflow。RunMetadata原型。支持运行时信息分析(如时间和内存)是必要的。
  • op_log: tensorflow.tfprof。OpLogProto原型。用户可以使用op_log为图形节点分配“类型”。“types”允许用户使用选项['accounted_type_regexes']灵活地分组和帐户配置文件。
  • cmd:字符串。“op”、“scope”、“graph”或“code”。“op”视图使用操作类型组织配置文件。(例如MatMul)“范围”视图使用图节点名称范围组织概要文件。“图形”视图使用图形节点输入/输出组织概要文件。“code”视图使用Python调用堆栈组织配置文件。
  • options:选项的dict。看到核心/分析器/ g3doc / options.md。

返回值:

  • 如果cmd是“scope”或“graph”,则返回GraphNodeProto proto。如果cmd是'op'或'code',返回MultiGraphNodeProto proto。副作用:stdout /文件/时间表。json依赖于选项['output']

13、tf.profiler.ProfileOptionBuilder

用于分析API的选项生成器。有关这些选项的教程,请参见https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md

代码语言:javascript复制
# Users can use pre-built options:
opts = (
    tf.profiler.ProfileOptionBuilder.trainable_variables_parameter())

# Or, build your own options:
opts = (tf.compat.v1.profiler.ProfileOptionBuilder()
    .with_max_depth(10)
    .with_min_micros(1000)
    .select(['accelerator_micros'])
    .with_stdout_output()
    .build()

# Or customize the pre-built options:
opts = (tf.compat.v1.profiler.ProfileOptionBuilder(
    tf.profiler.ProfileOptionBuilder.time_and_memory())
    .with_displaying_options(show_name_regexes=['.*rnn.*'])
    .build())

# Finally, profiling with the options:
_ = tf.compat.v1.profiler.profile(tf.compat.v1.get_default_graph(),
                        run_meta=run_meta,
                        cmd='scope',
                        options=opts)

1、__init__

代码语言:javascript复制
__init__(options=None)

构造函数。

参数:

  • options:可选的初始选项dict开始。

2、account_displayed_op_only

代码语言:javascript复制
account_displayed_op_only(is_true)

是否只计算显示的分析器节点的统计信息。

参数:

  • is_true:如果为真,则只显示输出最终显示的节点的帐户统计信息。否则,只要节点的类型匹配“account_type_regexes”,节点的统计信息就由其父节点来解释,即使它在输出中被隐藏,比如由hide_name_regexes。

返回:

  • self

3、build

代码语言:javascript复制
build()

构建分析选项。

返回:

  • 分析选项的dict。

4、float_operation

代码语言:javascript复制
@staticmethod
float_operation()

用于分析浮动操作的选项。有关浮点运算的注意事项,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/profile_model_architecture.md。

返回值:

  • 分析选项的dict。

5、order_by

代码语言:javascript复制
order_by(attribute)

根据属性对显示的分析器节点进行排序。支持的属性包括micros、bytes、occurrence、params等https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md

参数:

  • attribute:分析器节点拥有的属性。

返回值:

  • self

6、select

代码语言:javascript复制
select(attributes)

选择要显示的属性。有关支持的属性,请参见https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md。

参数:

  • attribute:分析器节点拥有的属性列表。

返回值:

  • self

7、time_and_memory

代码语言:javascript复制
@staticmethod
time_and_memory(
    min_micros=1,
    min_bytes=1,
    min_accelerator_micros=0,
    min_cpu_micros=0,
    min_peak_bytes=0,
    min_residual_bytes=0,
    min_output_bytes=0
)

显示操作时间和内存消耗。

参数:

  • min_micros:只显示执行时间不小于此值的分析器节点。它总结了加速器和cpu的时间。
  • min_bytes:只显示被请求分配不少于这个字节的分析器节点。
  • min_accelerator_micros:只显示分析器节点在加速器上花费的时间不少于这个时间(例如GPU)。
  • min_cpu_micros:只显示分析器节点在cpu上花费的时间不少于这个时间。
  • min_peak_bytes:只显示在峰值(高水印)使用不少于这个字节的分析器节点。对于由多个图节点组成的分析器节点,它对图节点的peak_bytes求和。
  • min_residual_bytes:只显示profiler节点不少于在Compute()结束后未被分配的这个字节。对于由多个图节点组成的分析器节点,它对图节点的residual_bytes求和。
  • min_output_bytes:只显示分析器节点的输出不少于这个字节。输出不一定由这个分析器节点分配。

返回值:

  • 分析选项的dict。

8、trainable_variables_parameter

代码语言:javascript复制
@staticmethod
trainable_variables_parameter()

用于分析可训练变量参数的选项。通常与“范围”视图一起使用。

返回值:

  • 分析选项的dict。

9、with_accounted_types

代码语言:javascript复制
with_accounted_types(account_type_regexes)

根据节点类型有选择地计算统计信息。这里,“types”表示分析器节点的属性。默认情况下,将设备名称(例如/job:xx/…/device:GPU:0)和操作类型(例如MatMul)作为概要节点的属性。用户还可以通过OpLogProto proto将定制的“类型”关联到分析器节点。例如,用户可以使用:account_type_regexes=['.*gpu:0]选择位于gpu:0上的分析器节点。*']如果节点的属性都不匹配指定的regexes,则不显示或计算该节点。

参数:

  • account_type_regexes:指定类型的regexes列表。

返回值:

  • 自我

10、with_empty_output

代码语言:javascript复制
with_empty_output()

不要产生副作用输出。

11、with_file_output

代码语言:javascript复制
with_file_output(outfile)

将结果打印到文件中。

12、with_max_depth

代码语言:javascript复制
with_max_depth(max_depth)

设置显示的最大深度。深度取决于分析视图。对于“scope”视图,它是名称范围层次结构的深度(树),对于“op”视图,它是操作类型的数量(列表),等等。

参数:

  • max_depth:要显示的数据结构的最大深度。

返回值:

  • self

13、with_min_execution_time

代码语言:javascript复制
with_min_execution_time(
    min_micros=0,
    min_accelerator_micros=0,
    min_cpu_micros=0
)

只显示使用不少于'min_micros'的分析器节点。

参数:

  • min_micros:只显示执行时间不小于此值的分析器节点。它总结了加速器和cpu的时间。
  • min_accelerator_micros:只显示分析器节点在加速器上花费的时间不少于这个时间(例如GPU)。
  • min_cpu_micros:只显示分析器节点在cpu上花费的时间不少于这个时间。

返回值:

  • self

14、with_min_float_operations

代码语言:javascript复制
with_min_float_operations(min_float_ops)

只显示使用不少于“min_float_ops”的分析器节点。有关浮点运算的注意事项,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/profile_model_architecture.md。

参数:

  • min_float_ops:只显示具有不小于此浮点操作的分析器节点。

返回值:

  • self

15、with_min_memory

代码语言:javascript复制
with_min_memory(
    min_bytes=0,
    min_peak_bytes=0,
    min_residual_bytes=0,
    min_output_bytes=0
)

只显示使用不少于“min_bytes”的分析器节点。

参数:

  • min_bytes:只显示被请求分配不少于这个字节的分析器节点。
  • min_peak_bytes:只显示在峰值(高水印)使用不少于这个字节的分析器节点。对于由多个图节点组成的分析器节点,它对图节点的peak_bytes求和。
  • min_residual_bytes:只显示profiler节点不少于在Compute()结束后未被分配的这个字节。对于由多个图节点组成的分析器节点,它对图节点的residual_bytes求和。
  • min_output_bytes:只显示分析器节点的输出不少于这个字节。输出不一定由这个分析器节点分配。

返回:

  • self

16、with_min_occurrence

代码语言:javascript复制
with_min_occurrence(min_occurrence)

只显示包含不少于“min_occurrence”图形节点的分析器节点。“节点”表示分析器输出节点,它可以是python行(代码视图)、操作类型(op视图)或图节点(图/范围视图)。python行包含由该行创建的所有图形节点,而操作类型包含该类型的所有图形节点。

参数:

  • min_occurrence:只显示不少于这个值的节点。

返回值:

  • 自我

17、with_min_parameters

代码语言:javascript复制
with_min_parameters(min_params)

只显示包含不少于“min_params”参数的分析器节点。参数通常是指张量流变量的权重。它反映了模型的“能力”。

参数:

  • min_params:只显示包含不少于这个数量的参数的分析器节点。

返回:

  • self

18、with_node_names

代码语言:javascript复制
with_node_names(
    start_name_regexes=None,
    show_name_regexes=None,
    hide_name_regexes=None,
    trim_name_regexes=None
)

用于选择要显示的分析器节点的正则表达式。在'with_accounted_types'被求值后,'with_node_names'被求值如下:对于概要文件数据结构,profiler首先找到匹配'start_name_regexes'的概要文件节点,然后从那里开始显示概要文件节点。然后,如果节点匹配“show_name_regexes”而不匹配“hide_name_regexes”,则显示该节点。如果一个节点匹配“trim_name_regexes”,分析器将停止进一步搜索该分支。

参数:

  • start_name_regexes:要开始显示的节点名regexes列表。
  • show_name_regexes:要显示的节点名称列表。
  • hide_name_regexes:应该隐藏的node_names regexes列表。
  • trim_name_regexes:从何处停止的节点名regexes列表。

返回值:

  • self

19、with_pprof_output

代码语言:javascript复制
with_pprof_output(pprof_file)

生成一个pprof概要文件gzip文件。要使用pprof文件:pprof -png——nodecount=100——sample_index=1

参数:

  • pprof_file:输出的文件名,通常后缀为.pb.gz。

返回值:

  • self

20、with_stdout_output

代码语言:javascript复制
with_stdout_output()

将结果打印到stdout。

21、with_step

代码语言:javascript复制
with_step(step)

要使用哪个概要文件步骤进行概要分析。这里的“步骤”指的是profile .add_step() API定义的步骤。

参数:

  • step:当配置文件的多个步骤可用时,选择要使用哪个步骤的配置文件。如果-1,使用所有可用步骤的平均值。

返回:

  • self

22、with_timeline_output

代码语言:javascript复制
with_timeline_output(timeline_file)

生成一个时间轴json文件。

14、tf.profiler.Profiler

TensorFlow多步骤的分析器。

代码语言:javascript复制
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.compat.v1.RunMetadata()
      _ = sess.run(...,
                   options=tf.compat.v1.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()

1、__init__

代码语言:javascript复制
__init__(
    graph=None,
    op_log=None
)

构造函数。

参数:

  • graph:tf.Graph。如果没有启用None和eager执行,则使用默认图。
  • op_log:可选的。tensorflow: tfprof:: OpLogProto原型。用于定义额外的op类型。

2、add_step

代码语言:javascript复制
add_step(
    step,
    run_meta
)

添加步骤的统计信息。

参数:

  • step:int,用于将一个或多个不同的run_meta组合在一起的id。当使用profile_xxx api进行概要分析时,用户可以使用选项中的步骤id对这些run_meta进行概要分析。
  • run_meta:包含会话运行统计信息的RunMetadata原型。

3、advise

代码语言:javascript复制
advise(options)

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

参数:

  • options:选项的dict。参见上面的ALL_ADVICE示例。

返回值:

  • 一个建议证明,从所有的检查报告。

4、profile_graph

代码语言:javascript复制
profile_graph(options)

描述由数据流图组织的图节点统计信息。

参数:

  • options:选项的dict。看到核心/分析器/ g3doc / options.md。

返回值:

  • 记录结果的GraphNodeProto。

5、profile_name_scope

代码语言:javascript复制
profile_name_scope(options)

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

参数:

  • options:选项的dict。看到核心/分析器/ g3doc / options.md。

返回值:

  • 记录结果的GraphNodeProto。

6、profile_operations

代码语言:javascript复制
profile_operations(options)

分析操作类型的统计信息(例如MatMul、Conv2D)。

参数:

  • options:选项的dict。看到核心/分析器/ g3doc / options.md。

返回值:

  • 记录结果的多重图形节点。

7、profile_python

代码语言:javascript复制
profile_python(options)

分析Python代码的统计数据。默认情况下,它显示根目录下的调用堆栈。为了避免冗余输出,可以使用以下选项过滤['show_name_regexes'] = ['.my_code.py ']。

参数:

  • options:选项的dict。看到核心/分析器/ g3doc / options.md。

返回值:

  • 记录结果的多重图形节点。

8、serialize_to_string

代码语言:javascript复制
serialize_to_string()

将ProfileProto序列化为二进制字符串。用户可以通过tfprof命令行或图形界面将其写入文件进行离线分析。

返回值:

  • ProfileProto二进制字符串。

15、tf.profiler.write_op_log

Log提供了'op_log',并在下面添加了额外的模型信息。

代码语言:javascript复制
tf.profiler.write_op_log(
    graph,
    log_dir,
    op_log=None,
    run_meta=None,
    add_trace=True
)

API还为tf.compat.v1.trainable_variables()中的ops分配了一个名为“_trainable_variables”的op类型。该API还为定义了op.RegisterStatistics()的ops记录“flops”统计信息。flops计算依赖于“graph”中定义的张量形状,这可能不完整。如果提供了'run_meta',则尽最大努力完成形状信息。

参数:

  • graph:tf.Graph。如果没有启用None和eager执行,则使用默认图。
  • log_dir:写入日志文件的目录。
  • op_log:(可选)要编写的OpLogProto proto。如果没有提供,则创建一个新的。
  • run_meta:(可选)RunMetadata原型,它帮助使用运行时形状信息来执行计算。
  • add_trace:是否添加python代码跟踪信息。用于支持“代码”视图。

0 人点赞