前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tf.summary

tf.summary

作者头像
狼啸风云
修改2022-09-04 21:37:56
2.4K0
修改2022-09-04 21:37:56
举报

目录

一、类和函数

1、类

2、函数

二、重要的函数和类

1、tf.summary.FileWriter()类

1、__init__

2、__enter__

3、add_event

4、add_graph

5、add_meta_graph

6、add_run_metadata

7、add_session_log

8、add_summary

9、close

10、flush

11、get_logdir

11、reopen

2、tf.summary.FileWriterCache()类

1、clear

2、get

3、tf.summary.get_summary_description()函数

4、tf.summary.histogram()函数

5、tf.summary.image()函数

6、tf.summary.merge()函数

7、tf.summary.merge_all()函数

8、tf.summary.scalar()函数

9、tf.summary.tensor_summary()函数

10、tf.summary.text()函数


一、类和函数

在TensorFlow中,最常用的可视化方法有三种途径,分别为TensorFlow与OpenCv的混合编程、利用Matpltlib进行可视化、利用TensorFlow自带的可视化工具TensorBoard进行可视化。这三种方法,在前面博客中都有过比较详细的介绍。但是,TensorFlow中最重要的可视化方法是通过TensorBoard、tf.summary和tf.summary.FileWriter这三个模块相互合作来完成的。

1、类

class Event

class FileWriter: 将摘要协议缓冲区写入事件文件。

class FileWriterCache: 文件写入器缓存。

class SessionLog

class Summary

class SummaryDescription

class TaggedRunMetadata

2、函数

all_v2_summary_ops(...): 返回当前默认图中定义的所有v2样式的摘要操作。

audio(...): 输出带有音频的摘要协议缓冲区。

get_summary_description(...): 给定一个TensorSummary node_def,检索它的摘要描述。

histogram(...): 输出带有直方图的摘要协议缓冲区。

image(...): 输出带有图像的摘要协议缓冲区。

initialize(...): 初始化用于图形执行模式的摘要编写。

merge(...): 合并摘要。

merge_all(...): 合并默认图中收集的所有摘要。

scalar(...): 输出包含单个标量值的摘要协议缓冲区。

tensor_summary(...): 使用序列化的张量.proto输出摘要协议缓冲区。

text(...): 总结了文本数据。

二、重要的函数和类

1、tf.summary.FileWriter()类

将摘要协议缓冲区写入事件文件。FileWriter类提供了一种机制,用于在给定目录中创建事件文件,并向其中添加摘要和事件。该类异步更新文件内容。这允许训练程序调用方法直接从训练循环中将数据添加到文件中,而不会减慢训练的速度。当使用tf.compat.v1.Session参数构造时,FileWriter会在新的基于图的摘要(tf.contrib.summary)上形成一个兼容层,以便使用预先存在的代码(需要FileWriter实例)编写新的摘要。

1、__init__

代码语言:javascript
复制
__init__(
    logdir,
    graph=None,
    max_queue=10,
    flush_secs=120,
    graph_def=None,
    filename_suffix=None,
    session=None
)

创建一个FileWriter,可选地在给定会话中共享。通常,构造文件写入器会在logdir中创建一个新的事件文件。此事件文件将包含调用以下函数之一时构造的事件协议缓冲区:add_summary()、add_session_log()、add_event()或add_graph()。如果你将图形传递给构造函数,它将被添加到事件文件中。(这相当于稍后调用add_graph())。TensorBoard将从文件中选择图形并以图形方式显示,这样你就可以交互式地查看您构建的图形:

代码语言:javascript
复制
...create a graph...
# Launch the graph in a session.
sess = tf.compat.v1.Session()
# Create a summary writer, add the 'graph' to the event file.
writer = tf.compat.v1.summary.FileWriter(<some-directory>, sess.graph)

构造函数的会话参数使返回的FileWriter成为基于图的新摘要(tf.contrib.summary)上的兼容层。至关重要的是,这意味着底层的writer资源和事件文件将与使用相同会话和logdir的任何其他FileWriter共享,并与任何tf.contrib.summary共享。使用相同的共享资源名称(默认范围为logdir)在此会话中编写摘要。如果不存在这样的资源,将使用此构造函数的其余参数创建一个,但是如果已经存在这些参数,则忽略它们。

参数:

  • logdir: 一个字符串。将写入事件文件的目录。
  • graph: 图形对象,如sess.graph。
  • max_queue: 整数。等待事件和摘要的队列大小。
  • flush_secs: 号码。将挂起的事件和摘要刷新到磁盘的频率(以秒为单位)。
  • graph_def: DEPRECATED:使用graph参数。
  • filename_suffix: 一个字符串。每个事件文件的名称都带有后缀。
  • session: tf.compat.v1.Session对象。

可能产生的异常:

  • RuntimeError: If called with eager execution enabled.

2、__enter__

代码语言:javascript
复制
__enter__()

使用with语句。

3、__exit__

代码语言:javascript
复制
__exit__(
    unused_type,
    unused_value,
    unused_traceback
)

使用with语句。

4、add_event

代码语言:javascript
复制
add_event(event)

将事件添加到事件文件中。

参数:

  • event: 事件协议缓冲区。

5、add_graph

代码语言:javascript
复制
add_graph(
    graph,
    global_step=None,
    graph_def=None
)

将图形添加到事件文件中。协议缓冲区描述的图形将由TensorBoard显示。大多数用户在构造函数中传递一个图。

参数:

  • graph: 图形对象,如ses .graph。
  • global_step: 号码。可选的全局步骤计数器,以记录与图形。
  • graph_def: 弃用。而是使用graph参数。

可能产生的异常:

  • ValueError: If both graph and graph_def are passed to the method.

6、add_meta_graph

代码语言:javascript
复制
add_meta_graph(
    meta_graph_def,
    global_step=None
)

将MetaGraphDef添加到事件文件中。MetaGraphDef允许通过saver.import_meta_graph()运行给定的图。

参数:

  • meta_graph_def: MetaGraphDef对象,通常由saver.export_meta_graph()返回。
  • global_step: 号码。可选的全局步骤计数器,以记录与图形。

可能产生的异常:

  • TypeError: If both meta_graph_def is not an instance of MetaGraphDef.

7、add_run_metadata

代码语言:javascript
复制
add_run_metadata(
    run_metadata,
    tag,
    global_step=None
)

为单个session.run()调用添加元数据信息。

参数:

  • run_metadata: 一个RunMetadata原buf对象。
  • tag: 此元数据的标记名称。
  • global_step: 号码。可选的全局步骤计数器,以记录与StepStats。

可能产生的异常:

  • ValueError: If the provided tag was already used for this type of event.

8、add_session_log

代码语言:javascript
复制
add_session_log(
    session_log,
    global_step=None
)

向事件文件添加一个SessionLog协议缓冲区。此方法将提供的会话包装在事件协议缓冲区中,并将其添加到事件文件中。

参数:

  • session_log: 一个SessionLog协议缓冲区。
  • global_step: 号码。可选的全局步骤值,以记录摘要。

9、add_summary

代码语言:javascript
复制
add_summary(
    summary,
    global_step=None
)

将摘要协议缓冲区添加到事件文件中。此方法将提供的摘要封装在事件协议缓冲区中,并将其添加到事件文件中。你可以使用tf.Session.run或tf.张量来传递计算任何总结op的结果。对这个函数求eval。或者,您可以传递一个tf.compat.v1.Summary协议缓冲区,该缓冲区由您自己的数据填充。后者通常用于在事件文件中报告评估结果。

参数:

  • summary:摘要协议缓冲区,可选地序列化为字符串。
  • global_step:号码。可选的全局步骤值,以记录摘要。

10、close

代码语言:javascript
复制
close()

将事件文件刷新到磁盘并关闭该文件。当你不再需要摘要编写器时调用此方法。

10、flush

代码语言:javascript
复制
flush()

将事件文件刷新到磁盘。调用此方法以确保所有挂起事件都已写入磁盘。

11、get_logdir

代码语言:javascript
复制
get_logdir()

返回将写入事件文件的目录。

12、reopen

代码语言:javascript
复制
reopen()

EventFileWriter重开。可以在close()之后调用,以便在同一目录中添加更多事件。事件将进入一个新的事件文件。如果EventFileWriter未关闭,则不执行任何操作。

2、tf.summary.FileWriterCache()类

这个类缓存文件写入器,每个目录一个。

1、clear

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

清除缓存的摘要写入器。目前仅用于单元测试。

2、get

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

返回指定目录的文件写入器。

参数:

  • logdir: str类型,目录名。

返回值:

  • A FileWriter.

3、tf.summary.get_summary_description()函数

给定一个TensorSummary node_def,检索它的摘要描述。

代码语言:javascript
复制
tf.summary.get_summary_description(node_def)

当概要op被实例化时,相关元数据的摘要描述存储在它的NodeDef中。此方法检索描述。

参数:

  • node_def: 一个TensorSummary操作的node_def_pb2.NodeDef

返回值:

  • 一个summary_pb2.SummaryDescription

可能产生的异常:

  • ValueError: if the node is not a summary op.

4、tf.summary.histogram()函数

输出带有直方图的摘要协议缓冲区。

代码语言:javascript
复制
tf.summary.histogram(
    name,
    values,
    collections=None,
    family=None
)

添加直方图摘要使您能够可视化数据在TensorBoard中的分布。您可以在这里看到关于TensorBoard直方图仪表板的详细说明。生成的摘要有一个摘要值,其中包含值的直方图。如果任何值不是有限的,该op将报告InvalidArgument错误。

参数:

  • name: 生成的节点的名称。也将作为一个系列名称在TensorBoard。
  • values: 一个实数张量。任何形状。用于构建直方图的值。
  • collections: 可选的图形集合键列表。新的summary op被添加到这些集合中。默认为[GraphKeys.SUMMARIES]。
  • family: 可选的;如果提供,用作摘要标记名称的前缀,它控制用于在Tensorboard上显示的选项卡名称。

返回值:

  • 字符串类型的标量张量。序列化的摘要协议缓冲区。

5、tf.summary.image()函数

输出带图像的probuf,汇总数据的图像的的形式如下: ' tag /image/0', ' tag /image/1'...,如:input/image/0等。

代码语言:javascript
复制
tf.summary.image(
    name,
    tensor,
    max_outputs=3,
    collections=None,
    family=None
)

摘要最多有max_output包含图像的摘要值。图像由张量构成,张量必须为4-D,形状[batch_size, height, width, channels],通道可以是:

  • 1: 张量被解释为灰度。
  • 3: 张量被解释为RGB。
  • 4: 张量被解释为RGBA。

图像的通道数与输入张量相同。对于浮点数输入,每次将值规范化为一个图像,以适应范围[0,255]。uint8值不变。op使用两种不同的归一化算法:

  • 如果所有的输入值都是正数,那么就对它们进行重新排序,使最大的值为255。
  • 如果任何输入值为负,则值将被移动,因此输入值0.0位于127。然后对它们重新排序,使最小的值为0,或者最大的值为255。

输出摘要中的Summary.Value的protobufs根据名称生成,后缀取决于max_output设置:

  • 如果max_output为1,则summary value标记为'name/image'。
  • 如果max_output大于1,则按“name/image/0”、“name/image/1”等顺序生成摘要值标记。

参数:

  • name: 生成的节点的名称。也将作为一个系列名称在TensorBoard。
  • tensor: 一个4- d uint8或浮点32张量,形状[batch_size, height, width, channels],其中channels是1、3或4。
  • max_output: 生成图像的批处理元素的最大数量。
  • collections: 可选的op . graphkeys列表。要将摘要添加到其中的集合。默认为[_ops.GraphKeys.SUMMARIES]。
  • family: 可选的;如果提供,用作摘要标记名称的前缀,它控制用于在Tensorboard上显示的选项卡名称。

返回值:

  • 字符串类型的标量张量。序列化的摘要协议缓冲区。

6、tf.summary.merge()函数

此op创建一个摘要协议缓冲区,其中包含输入摘要中所有值的并集。当Op运行时,如果要合并的摘要中的多个值使用相同的标记,那么它将报告InvalidArgument错误。

参数:

  • inputs: 包含序列化摘要协议缓冲区的字符串张量对象列表。
  • collections: 可选的图形集合键列表。新的summary op被添加到这些集合中。默认为[]。
  • name: 操作的名称(可选)。

返回值:

  • 字符串类型的标量张量。合并产生的序列化摘要协议缓冲区。

可能产生的异常:

  • RuntimeError: If called with eager mode enabled.

7、tf.summary.merge_all()函数

合并默认图中收集的所有摘要。

代码语言:javascript
复制
tf.summary.merge_all(
    key=tf.GraphKeys.SUMMARIES,
    scope=None,
    name=None
)

参数:

  • key: GraphKey用于收集摘要。默认为GraphKeys.SUMMARIES。
  • scope: 使用re.match筛选摘要操作的可选作用域。

返回值:

  • 如果没有收集摘要,则返回None。否则返回字符串类型的标量张量,其中包含合并后的序列化摘要协议缓冲区。

可能产生的异常:

  • RuntimeError: If called with eager execution enabled.

8、tf.summary.scalar()函数

用来显示标量信息,其格式为:

代码语言:javascript
复制
tf.summary.scalar(
    name,
    tensor,
    collections=None,
    family=None
)

生成的摘要有一个张量,包含输入张量的原式。

参数:

  • name: 生成的节点的名称。也将作为系列名称在TensorBoard。
  • tensor: 包含一个单值的实数张量。
  • collections: 可选的图形集合键列表。新的summary op被添加到这些集合中。默认为[GraphKeys.SUMMARIES]。
  • family: 可选的;如果提供,用作摘要标记名称的前缀,它控制用于在Tensorboard上显示的选项卡名称。

返回值:

  • 字符串类型的标量张量。其中包含一个摘要原buf。

可能产生的异常:

  • ValueError: If tensor has the wrong shape or type.

9、tf.summary.tensor_summary()函数

使用序列化的张量.proto输出摘要协议缓冲区。

代码语言:javascript
复制
tf.summary.tensor_summary(
    name,
    tensor,
    summary_description=None,
    collections=None,
    summary_metadata=None,
    family=None,
    display_name=None
)

参数:

  • name: 生成的节点的名称。如果没有设置display_name,它还将作为TensorBoard中的标记名。(在这种情况下,标记名称将继承tf名称作用域。)
  • tensor: 任何类型和形状的张量,可以序列化。
  • summary_description: 对摘要序列的长描述。支持减价。
  • collections: 可选的图形集合键列表。新的summary op被添加到这些集合中。默认为[GraphKeys.SUMMARIES]。
  • abstry_metadata: 可选的SummaryMetadata proto(它描述哪些插件可能使用summary值)。
  • family: 可选的;如果提供,则用作摘要标记的前缀,该标记控制未设置display_name时在TensorBoard上显示的名称。
  • display_name: 在TensorBoard中用于命名该数据的字符串。如果没有设置此值,则使用节点名。

返回值:

  • 字符串类型的标量张量。序列化的摘要协议缓冲区。

10、tf.summary.text()函数

总结了文本数据。

代码语言:javascript
复制
tf.summary.text(
    name,
    tensor,
    collections=None
)

通过这个插件总结的文本数据将在TensorBoard的文本仪表板中可见。标准的TensorBoard文本仪表板将在字符串中呈现markdown,并将自动将1d和2d张量组织到表中。如果提供了一个二维以上的张量,则会显示一个二维子数组,并显示一条警告消息。(注意,这种行为不是text summary api的固有行为,而是默认的TensorBoard文本插件的固有行为。)

参数:

  • name: 生成的节点的名称。也将作为一个系列名称在TensorBoard。
  • tensor: 要概括的弦型张量。
  • collections: 可选的op . graphkeys列表。要将摘要添加到其中的集合。默认为[_ops.GraphKeys.SUMMARIES]。

返回值:

  • 一个TensorSummary op,它的配置使TensorBoard能够识别它包含文本数据。张量是弦的一个标量张量,它包含了张量。

可能产生的异常:

  • ValueError: If tensor has the wrong type.

原链接:https://tensorflow.google.cn/api_docs/python/tf/summary

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、类和函数
    • 1、类
      • 2、函数
      • 二、重要的函数和类
        • 1、tf.summary.FileWriter()类
          • 1、__init__
          • 2、__enter__
          • 3、__exit__
          • 4、add_event
          • 5、add_graph
          • 6、add_meta_graph
          • 7、add_run_metadata
          • 8、add_session_log
          • 9、add_summary
          • 10、close
          • 10、flush
          • 11、get_logdir
          • 12、reopen
        • 2、tf.summary.FileWriterCache()类
          • 1、clear
          • 2、get
        • 3、tf.summary.get_summary_description()函数
          • 4、tf.summary.histogram()函数
            • 5、tf.summary.image()函数
              • 6、tf.summary.merge()函数
                • 7、tf.summary.merge_all()函数
                  • 8、tf.summary.scalar()函数
                    • 9、tf.summary.tensor_summary()函数
                      • 10、tf.summary.text()函数
                      相关产品与服务
                      文件存储
                      文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档