TensorFlow:可视化

在网络训练的过程中,通过Web 端监控网络的训练进度,可视化网络的训练结果对于
提高开发效率是非常重要的。
TensorFlow 提供了一个专门的可视化工具,叫做TensorBoard,他通过TensorFlow 将监控数据写入到文件系统,并利用Web 后端监控对应的文件目录,从而可以允许用户从远程查看网络的监控数据。

TensorBoard 的使用需要训练部分和浏览器交互工作。

一、模型端

在模型端,需要创建写入监控数据的Summary 类,并在需要的时候写入监控数据。首
先通过tf.summary.create_file_writer 创建监控对象,并制定监控数据的写入目录:

# 创建监控类,监控数据将写入log_dir 目录
summary_writer = tf.summary.create_file_writer(log_dir)

我们以监控误差数据和可视化图片数据为例,介绍如何写入监控数据。在前向计算完成后,对于误差这种标量数据,我们通过tf.summary.scalar 函数记录监控数据,并指定时间戳step:

with summary_writer.as_default():
	# 当前时间戳step 上的数据为loss,写入到ID 位train-loss 对象中
	tf.summary.scalar('train-loss', float(loss), step=step)

需要注意的是,TensorBoard 通过字符串ID 来区分不同类别的监控数据,因此对于误差数
据,我们将它命名为”train-loss”,其他类的数据不可写入此对象,防止数据污染。

对于图片类型的数据,通过tf.summary.image 函数写入监控图片数据:

with summary_writer.as_default():
	# 写入测试准确率
	tf.summary.scalar('test-acc', float(total_correct/total),
step=step)
	# 可视化测试用的图片,设置最多可视化9 张图片
	tf.summary.image("val-onebyone-images:", val_images,
max_outputs=9, step=step)

运行模型程序后,相应的数据将写入到指定文件目录中。

二、浏览器端

在监控页面的上端可以选择不同类型数据的监控页面,比如标量监控页面SCALARS,图
片可视化页面IMAGES 等等。对于我们的例子,我们需要监控的训练误差和测试准确率的
曲线在SCALARS 页面可以查看

在 IMAGES 页面,可以查看每个step 的图片可视化效果

除了监控标量数据和图片数据外,TensorBoard 还支持通过tf.summary.histogram 查看张量的数据直方图分布,以及通过tf.summary.text 打印文本信息:

with summary_writer.as_default():
	# 当前时间戳step 上的数据为loss,写入到ID 位train-loss 对象中
	tf.summary.scalar('train-loss', float(loss), step=step)
	# 可视化真实标签的直方图分布
	tf.summary.histogram('y-hist',y, step=step)
	# 查看文本信息
	tf.summary.text('loss-text',str(float(loss)))

在HISTOGRAMS 页面即可查看张量的直方图,在TEXT 页面可以查看文本信息

你可能感兴趣的:(TensorFlow,学习)