目录
2、tf.summary.FileWriterCache()类
3、tf.summary.get_summary_description()函数
9、tf.summary.tensor_summary()函数
在TensorFlow中,最常用的可视化方法有三种途径,分别为TensorFlow与OpenCv的混合编程、利用Matpltlib进行可视化、利用TensorFlow自带的可视化工具TensorBoard进行可视化。这三种方法,在前面博客中都有过比较详细的介绍。但是,TensorFlow中最重要的可视化方法是通过TensorBoard、tf.summary和tf.summary.FileWriter这三个模块相互合作来完成的。
class FileWriter
: 将摘要协议缓冲区写入事件文件。
class FileWriterCache
: 文件写入器缓存。
all_v2_summary_ops(...)
: 返回当前默认图中定义的所有v2样式的摘要操作。
audio(...)
: 输出带有音频的摘要协议缓冲区。
get_summary_description(...)
: 给定一个TensorSummary node_def,检索它的摘要描述。
histogram(...)
: 输出带有直方图的摘要协议缓冲区。
image(...)
: 输出带有图像的摘要协议缓冲区。
initialize(...)
: 初始化用于图形执行模式的摘要编写。
merge(...)
: 合并摘要。
merge_all(...)
: 合并默认图中收集的所有摘要。
scalar(...)
: 输出包含单个标量值的摘要协议缓冲区。
tensor_summary(...)
: 使用序列化的张量.proto输出摘要协议缓冲区。
text(...)
: 总结了文本数据。
将摘要协议缓冲区写入事件文件。FileWriter类提供了一种机制,用于在给定目录中创建事件文件,并向其中添加摘要和事件。该类异步更新文件内容。这允许训练程序调用方法直接从训练循环中将数据添加到文件中,而不会减慢训练的速度。当使用tf.compat.v1.Session参数构造时,FileWriter会在新的基于图的摘要(tf.contrib.summary)上形成一个兼容层,以便使用预先存在的代码(需要FileWriter实例)编写新的摘要。
1、__init__
__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将从文件中选择图形并以图形方式显示,这样你就可以交互式地查看您构建的图形:
...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)在此会话中编写摘要。如果不存在这样的资源,将使用此构造函数的其余参数创建一个,但是如果已经存在这些参数,则忽略它们。
参数:
可能产生的异常:
RuntimeError
: If called with eager execution enabled.2、__enter__
__enter__()
使用with语句。
3、__exit__
__exit__(
unused_type,
unused_value,
unused_traceback
)
使用with语句。
4、add_event
add_event(event)
将事件添加到事件文件中。
参数:
5、add_graph
add_graph(
graph,
global_step=None,
graph_def=None
)
将图形添加到事件文件中。协议缓冲区描述的图形将由TensorBoard显示。大多数用户在构造函数中传递一个图。
参数:
可能产生的异常:
ValueError
: If both graph and graph_def are passed to the method.6、add_meta_graph
add_meta_graph(
meta_graph_def,
global_step=None
)
将MetaGraphDef添加到事件文件中。MetaGraphDef允许通过saver.import_meta_graph()运行给定的图。
参数:
可能产生的异常:
TypeError
: If both meta_graph_def
is not an instance of MetaGraphDef
.7、add_run_metadata
add_run_metadata(
run_metadata,
tag,
global_step=None
)
为单个session.run()调用添加元数据信息。
参数:
可能产生的异常:
ValueError
: If the provided tag was already used for this type of event.8、add_session_log
add_session_log(
session_log,
global_step=None
)
向事件文件添加一个SessionLog协议缓冲区。此方法将提供的会话包装在事件协议缓冲区中,并将其添加到事件文件中。
参数:
9、add_summary
add_summary(
summary,
global_step=None
)
将摘要协议缓冲区添加到事件文件中。此方法将提供的摘要封装在事件协议缓冲区中,并将其添加到事件文件中。你可以使用tf.Session.run或tf.张量来传递计算任何总结op的结果。对这个函数求eval。或者,您可以传递一个tf.compat.v1.Summary协议缓冲区,该缓冲区由您自己的数据填充。后者通常用于在事件文件中报告评估结果。
参数:
summary
:摘要协议缓冲区,可选地序列化为字符串。close()
将事件文件刷新到磁盘并关闭该文件。当你不再需要摘要编写器时调用此方法。
10、flush
flush()
将事件文件刷新到磁盘。调用此方法以确保所有挂起事件都已写入磁盘。
11、get_logdir
get_logdir()
返回将写入事件文件的目录。
12、reopen
reopen()
EventFileWriter重开。可以在close()之后调用,以便在同一目录中添加更多事件。事件将进入一个新的事件文件。如果EventFileWriter未关闭,则不执行任何操作。
这个类缓存文件写入器,每个目录一个。
1、clear
@staticmethod
clear()
清除缓存的摘要写入器。目前仅用于单元测试。
2、get
@staticmethod
get(logdir)
返回指定目录的文件写入器。
参数:
返回值:
FileWriter
.给定一个TensorSummary node_def,检索它的摘要描述。
tf.summary.get_summary_description(node_def)
当概要op被实例化时,相关元数据的摘要描述存储在它的NodeDef中。此方法检索描述。
参数:
返回值:
可能产生的异常:
ValueError
: if the node is not a summary op.输出带有直方图的摘要协议缓冲区。
tf.summary.histogram(
name,
values,
collections=None,
family=None
)
添加直方图摘要使您能够可视化数据在TensorBoard中的分布。您可以在这里看到关于TensorBoard直方图仪表板的详细说明。生成的摘要有一个摘要值,其中包含值的直方图。如果任何值不是有限的,该op将报告InvalidArgument错误。
参数:
values
: 一个实数张量。任何形状。用于构建直方图的值。collections
: 可选的图形集合键列表。新的summary op被添加到这些集合中。默认为[GraphKeys.SUMMARIES]。family
: 可选的;如果提供,用作摘要标记名称的前缀,它控制用于在Tensorboard上显示的选项卡名称。返回值:
输出带图像的probuf,汇总数据的图像的的形式如下: ' tag /image/0', ' tag /image/1'...,如:input/image/0等。
tf.summary.image(
name,
tensor,
max_outputs=3,
collections=None,
family=None
)
摘要最多有max_output包含图像的摘要值。图像由张量构成,张量必须为4-D,形状[batch_size, height, width, channels],通道可以是:
图像的通道数与输入张量相同。对于浮点数输入,每次将值规范化为一个图像,以适应范围[0,255]。uint8值不变。op使用两种不同的归一化算法:
输出摘要中的Summary.Value的protobufs根据名称生成,后缀取决于max_output设置:
参数:
tensor
: 一个4- d uint8或浮点32张量,形状[batch_size, height, width, channels],其中channels是1、3或4。collections
: 可选的op . graphkeys列表。要将摘要添加到其中的集合。默认为[_ops.GraphKeys.SUMMARIES]。family
: 可选的;如果提供,用作摘要标记名称的前缀,它控制用于在Tensorboard上显示的选项卡名称。返回值:
此op创建一个摘要协议缓冲区,其中包含输入摘要中所有值的并集。当Op运行时,如果要合并的摘要中的多个值使用相同的标记,那么它将报告InvalidArgument错误。
参数:
inputs
: 包含序列化摘要协议缓冲区的字符串张量对象列表。collections
: 可选的图形集合键列表。新的summary op被添加到这些集合中。默认为[]。返回值:
可能产生的异常:
RuntimeError
: If called with eager mode enabled.合并默认图中收集的所有摘要。
tf.summary.merge_all(
key=tf.GraphKeys.SUMMARIES,
scope=None,
name=None
)
参数:
scope
: 使用re.match筛选摘要操作的可选作用域。返回值:
可能产生的异常:
RuntimeError
: If called with eager execution enabled.用来显示标量信息,其格式为:
tf.summary.scalar(
name,
tensor,
collections=None,
family=None
)
生成的摘要有一个张量,包含输入张量的原式。
参数:
tensor
: 包含一个单值的实数张量。collections
: 可选的图形集合键列表。新的summary op被添加到这些集合中。默认为[GraphKeys.SUMMARIES]。family
: 可选的;如果提供,用作摘要标记名称的前缀,它控制用于在Tensorboard上显示的选项卡名称。返回值:
可能产生的异常:
ValueError
: If tensor has the wrong shape or type.使用序列化的张量.proto输出摘要协议缓冲区。
tf.summary.tensor_summary(
name,
tensor,
summary_description=None,
collections=None,
summary_metadata=None,
family=None,
display_name=None
)
参数:
tensor
: 任何类型和形状的张量,可以序列化。collections
: 可选的图形集合键列表。新的summary op被添加到这些集合中。默认为[GraphKeys.SUMMARIES]。family
: 可选的;如果提供,则用作摘要标记的前缀,该标记控制未设置display_name时在TensorBoard上显示的名称。返回值:
总结了文本数据。
tf.summary.text(
name,
tensor,
collections=None
)
通过这个插件总结的文本数据将在TensorBoard的文本仪表板中可见。标准的TensorBoard文本仪表板将在字符串中呈现markdown,并将自动将1d和2d张量组织到表中。如果提供了一个二维以上的张量,则会显示一个二维子数组,并显示一条警告消息。(注意,这种行为不是text summary api的固有行为,而是默认的TensorBoard文本插件的固有行为。)
参数:
tensor
: 要概括的弦型张量。collections
: 可选的op . graphkeys列表。要将摘要添加到其中的集合。默认为[_ops.GraphKeys.SUMMARIES]。返回值:
可能产生的异常:
ValueError
: If tensor has the wrong type.