如何用TensorBoard可视化模型?
摘要:Tensorboard是TF自带的可视化工具。它可以让我们从各个角度观察与修改模型,比如观察模型在训练时的loss动态变化曲线而无需在迭代完毕后再画图、绘制神经网络的结构图、调节超参数等。下面以最简单的形式展示tensorboard的常用功
Tensorboard是TF自带的可视化工具。它可以让我们从各个角度观察与修改模型,比如观察模型在训练时的loss动态变化曲线而无需在迭代完毕后再画图、绘制神经网络的结构图、调节超参数等。下面以最简单的形式展示tensorboard的常用功能。
开启tensorboard
打开命令行输入
tensorboard --logdir <logs> --samples_per_plugin scalars=99999
然后回车。logdir表示tensorboard所要观察的文件夹位置,--samples_per_plugin scalars=99999表示折线图采样数值的数量。后面再使用TF将信息写入该文件夹中,tensorboard就可以从中读取数据用于可视化。输出如下:
进入得到的链接,就是tensorboard的界面了。这时你的logs文件夹应该还是空的,没有写入数据,所以tensorboard无法可视化。下面介绍如何向文件夹中写入数据。
Scalars
Scalars用来可视化时间步下的状态曲线,比如loss的变化曲线。下面是代码示例:
import numpy as np
import tensorflow as tf
from datetime import datetime
current_time = datetime.now().strftime("%Y{y}%m{m}%d{d}-%H-%M-%S").format(y = '年',m = '月',d='日')
log_path = 'logs/'+current_time#——————1——————
log_writer = tf.summary.create_file_writer(log_path)#——————2——————
for i in range(100):
data1 = np.random.normal()#——————3——————
data2 = np.random.normal()#——————3——————
with log_writer.as_default():#——————4——————
tf.summary.scalar('test1', data1, i) #——————5——————
tf.summary.scalar('test2', data2, i) #——————5——————
#1/2:创建以时间命名的用于保存记录的文件,并获取用于往该文件中写入记录的对象实例。注意!文件要保存在logs文件夹中,tensorboard才能读取。
#3:定义每次迭代要记录的值。
#4/5:使用#2定义的对象将记录以scalar的方式写入,scalar实际上就是画折线图,其中三个参数分别代表是:记录名、这次迭代要保存的值、第几次迭代。可以看出,一个文件可以保存多条记录,而每条记录都含有多次迭代。
在tensorboard界面中,右上角点击刷新,或者在下拉选项中选择scalar,tensorboard就会显示输出的记录。界面中还能调节平滑度什么的,这里就不记录了。Tensorboard的一大好处在于它能在代码执行的时候同步可视化图像,上面的代码示例仅有100次迭代,不好体现,可以自己尝试一下。
可视化后的折线图界面如下:
Graphs
可视化模型结构,但是显示出来的结构很乱,几乎没法看,暂时没弄懂看的是什么。这里先记录显示流程。
