简介

在训练过程中记录数据的利器:tf.summary()提供了各类方法(支持各种多种格式)用于保存训练过程中产生的数据(比如loss_value、accuracy、整个variable),这些数据以日志文件的形式保存到指定的文件夹中。
数据可视化:而tensorboard可以将tf.summary()记录下来的日志可视化,根据记录的数据格式,生成折线图、统计直方图、图片列表等多种图。
tf.summary()通过递增的方式更新日志,这让我们可以边训练边使用tensorboard读取日志进行可视化,从而实时监控训练过程。

创建实例——tf.summary.create_file_writer()

tf.summary.create_file_writer(logdir,max_queue=None, flush_millis=None, filename_suffix=None, name=None)

参数说明:
logdir:文件夹路径
max_queue:最多在缓存中暂存max_queue个数据,当超过max_queue个时,flush更新到日志文件中并清空缓存。默认为10。
flush_millis:至少flush_millis毫秒内进行一次flush。默认为120,000毫秒。
filename_suffix:日志文件的后缀。默认为.v2。
name:(tf1.0残余特性,请忽略它)本操作的名称。

返回一个SummaryWriter实例对象。

实例常用方法

set_as_default()

设定默认的 summary writer ,亦即让此后出现的所有 summary 写入操作,都默认使用本个 summary writer 实例进行记录。

as_default()

配合with使用,在with内的上下文中,出现的所有 summary 写入操作,都默认使用本个 summary writer 实例进行记录。

flush()

强制将缓存中的数据写入到日志文件中

close()

强制将缓存中的数据写入到日志文件中,然后关闭 summary writer

写入函数

tf.summary.scalar()

tf.summary.scalar(name, data, step=None, description=None):用来保存单个数值(loss、accuary、学习率等)

data必须是标量值,step必须是可以转化为int64的、递增的数值。
返回boolean值,是否写入。

tf.summary.histogram()

tf.summary.histogram(name, data, step=None, buckets=None, description=None):直方图

buckets:直方图中“桶”的个数,data:任何形状的可转换为float64的Tensor。

tf.summary.text()

tf.summary.text(name, data, step=None, description=None):文本
data:一个字符串Tensor。

tf.summary.image()

tf.summary.image(name, data, step=None, max_outputs=3, description=None):图像

data:一个记录像素数据的形状为[k, h, w, c]的Tensor,如果元素是浮点数,则会被裁剪为[0,1)的范围。
max_outputs:可选;最多保存max_outputs张图像,其他舍弃。

tf.summary.audio()

tf.summary.audio(name, data, sample_rate, step=None, max_outputs=3, encoding=None, description=None):音频

data:一个记录音频数据的,形状为[k, t, c]的Tensor。
其中:k是音频片段的数量。t音频帧的数量,c是channel的数目。元素应为[-1.0, 1.0]之间的浮点数。
sample_rate:采样率,以Hz为单位。必须是正整数。
encoding:音频编码格式,一个str值,目前仅支持 “wav” 格式。

开启tensorborad

tensorboard --logdir=log

开启trace

由于tensorflow2.0取消了sess和初始静态图,所以无法使用像1.x版本,直接将sess.graph添加进tensorboard,所以需要使用trace_on进行记录。
trace_export():停止trace,并将之前trace记录到的信息写入profiler日志文件。
trace_off():停止trace,并舍弃之前trace记录。
trace_on():开始trace

我们可以在训练前使用 tf.summary.trace_on 开启 Trace,此时 TensorFlow 会将训练时的大量信息(如计算图的结构,每个操作所耗费的时间等)记录下来。在训练完成后,使用 tf.summary.trace_export 将记录结果输出到文件。

writer = tf.summary.create_file_writer(log_dir)
tf.summary.trace_on(graph=True, profiler=True)  # 开启Trace,可以记录图结构和profile信息
"""
进行训练
"""
# 最后将统计信息写入日志
with writer.as_default():
    tf.summary.trace_export(name="model_trace", step=0, profiler_outdir=r".\log\tensorboard")    # 保存Trace信息到文件
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐