tf中 tensorboard 工具通过读取在网络训练过程中保存到本地的日志文件实现数据可视化,日志数据保存主要用到 tf.summary 中的方法。
tf.summary中summary是tf中的一个py文件,位置在 '/tensorflow/python/summary/' 文件夹下,提供了像tf.summary.scalar、tf.summary.histogram等方法,用来把graph图中的相关信息,如结构图、学习率、准确率、Loss等数据转换成 protocol buffer 数据格式,然后再调用tf.summary.FileWriter方法把这些数据写入到本地硬盘,之后就可以借用 tensorboard 工具可视化这些数据。
标量数据汇总和记录
标量,单个数值保存用 tf.summary.scalar,一般用来保存loss,accuary,学习率等数据,比较常用。tf.summary.scalar(name, tensor, collections=None, family=None)name: 给保存的数据的命名;
tensor: 要保存的tensor,在scalar函数中应该是一个标量,如当前的学习率、Loss等;
collections: 定义保存的数据归于哪个集合,默认的集合是 '[GraphKeys.SUMMARIES]';
family:可选参数,如果定义,在Tensorboard显示的时候,将作为前缀加在变量名前;
变量var的直方图汇总和记录
tf.summary.histogram 输出带直方图的汇总的protobuf 数据。tf.summary.histogram(tag, values, collections=None, name=None)
变量var的图像汇总和记录
tf.summary.image(name, tensor, max_outputs=3, collections=None, family=None)
合并汇总
使用 tf.summary.merge(inputs, collections=None, name=None) 对指定的汇总进行合并。
使用 tf.summaries.merge_all(key=_ops.GraphKeys.SUMMARIES) 对所有的汇总进行合并。
启动所有的汇总操作
merged = tf.summaries.merge_all(key=_ops.GraphKeys.SUMMARIES)
summary, acc = sess.run([merged, accuracy], feed_dict=feed_dict(False))数据写入本地磁盘
数据写入本地使用 tf.summary.FileWriter 类中的方法。summary_writer = tf.summary.FileWriter(args.log_dir, sess.graph)
构造函数:__init__(self,
logdir,
graph=None,
max_queue=10,
flush_secs=120,
graph_def=None,
filename_suffix=None)logdir:事件文件保存目录
graph: graph(图)对象,例如 sess.graph
max_queue: 队列中事件和概要的最大数量,默认为10;
flush_secs: 事件和概要保存到本地磁盘的间隔,默认120S;
graph_def: 旧版本的graph,已弃用;
filename_suffix: 可选参数,事件文件的后缀。
事件和汇总加入summary_writer
summary_writer.add_run_metadata(run_metadata, 'step%03d'% i)
summary_writer.add_summary(summary, i)