Tensorboard Note

在深度学习训练过程中,使用Tensorboard来绘制中间网络的各种状态进行可视化。

0. 安装tensorboard

在Anaconda环境中安装tensorboard的方法

0. 基本使用方法

tensorboard的使用方法可以简单的归结额外使用为三行代码

0.1 导入包

0.2 实例化

这里path为需要可视化的参数存储的路径,flush_secs参数为数据写入本地的时间间隔,默认为120s。

0.3 调用实例对数据可视化

随后调用writer实例化实现数据可视化,在后面详细介绍

1. 查看可视化内容

在编译器中打开tensorboard插件或执行以下代码

其中runs为对应tensorboard文件存放的文件夹,将给出的网址在浏览器中打开即可。 这里建议使用浏览器打开,因为插件有时不会终止进程,每次打开都需要解决端口占用问题。

2. 端口被占用问题解决方法

在查看可视化内容时遇到端口被占用的问题,可以通过以下两种方法解决。

2.1 终端关闭该端口

输入 lsof -i:6006,随后 kill -9 xxxx ,其中xxxx为PID对应的端口号。

2.2 更改tensorboard输出端口

在指令上指定一个新的输出端口tensorboard --logdir=path/train... --port==xxxx,此时xxxx为与被占用端口不同的端口

3. 远程连接(此处由于还未尝试,留待后续更新)

在远程主机上运行代码,本地查看可视化运行结果的实现方法

使用SSH远程连接的方式实现

4. tensorboard 使用

4.1 add_scalar可视化标量参数

训练过程中的标量参数如损失、准确率等可通过该方法实现参数的可视化

tag为图像的标签,其中Loss为类别标签,train为图片标签,如果需要将不同图片放在同一类别标签下,需要保持其标签的前缀相同,同时需要勾选左上角的show data download links选项。 该方式绘图的原理类似于(x, y)绘图,其中scalar_value参数与y相对应,global_step与x相对应。

4.2 add_scalars标量参数比较

需要在同一张图上绘制多个标量的变化进行比较时,可以使用add_scalars来实现,相比于add-scalar,其变化在于将需要比较的参数与字典的形式进行传入:

其中,字典的key表示该标量在图中的对应的名字,value为传入的标量

4.3 add_graph可视化模型

将模型结构可视化,函数的参数如下所示

其中,model为要可视化的模型,input_to_model为模型的输入数据,这里可以使用伪数据,即只要保证输入数据的维度与模型需要的输入维度相同就可。若模型需要多个输入,则可使用(input1, input2, ...)的形式输入。

4.4 add_image可视化图像结果

对于图像处理与生成,中间单张图像结果的可视化可以使用add_image实现:

其中。tag为标签,img_tensor为要可视化的图像或特征,dataformats为图像数据的格式,默认为'CHW',可以设置为'HWC'或将图片transpose为'CHW'格式。同时,可以使通过将图片在H或W维度拼接,来一次实现多张图片的可视化。

4.5 add_image可视化多张图像结果

对于N×C×H×W形式的多张图片,除默认的图像格式为'NCHW'外,其可视化与单张图片可视化相同。

同样的,也可以将dataformats更改为'NHWC'