tensorboard实现指标可视化

酥酥 发布于 2022-10-06 110 次阅读


跑深度学习模型,我们会有各种指标以及loss。想要可视化怎么办?初学者肯定是学的用matplotlib自己画。虽然自己画也行。但是麻烦啊,有没有东西可以直接帮我们可视化?

有的。pytorch和tensorflow都有一个TensorBoard

讲一下pytorch中怎么用:

官网文档:torch.utils.tensorboard — PyTorch 1.12 documentation

安装

pytorch 版本1.2以上才开始支持tensorboard,之前的版本不支持嗷。

				
					pip install tensorboard
				
			

代码中

在代码中导入tensorboard

				
					from torch.utils.tensorboard import SummaryWriter   
writer = SummaryWriter('你要存文件的地址')

# 用完以后记得销毁
writer.close()
				
			

这一步是把实例化一个writer。
待会儿tensorboard代码运行的时候会把你想存储的数据丢尽这个文件夹里。然后你在终端输入命令就是从这个文件夹里取出数据使用浏览器显示。
之后就是非常简单的事情了,在你训练过程的epoch迭代过程中加上你要监视的参数。

				
					add_scalar(tag, scalar_value, global_step=None, walltime=None, new_style=False, double_precision=False)
				
			

你要管的参数只有

  • tag (string) – 起个名
  • scalar_value (float or string/blobname) –你要保存的值
				
					for epoch in range(steps)
    ...
        loss = ...
    
        writer.add_scalar('Loss', loss, epoch)
				
			

这样你就可以获得一个loss是x轴,epoch为y轴的数据。

之后查看就是使用终端输入命令

				
					tensorboard --logdir=./path/to/the/folder --port xxxx
				
			

找到训练那一段代码。在训练阶段迭代那里加上我的loss。我是直接把数据保存在当前文件下的./log里边了。

运行一下,然后可以看到当前目录多出来一个log文件夹。

在当前文件夹下打开终端,输入命令tensorboard --logdir=./log --port xxxx

前边自定义端口就写上,前边没自定义端口就不用写--port xxxx

然后我们就可以看到已经生成的loss图像了。

补充

如果你想看多个参数,多个参数在同一个图上显示,就使用

				
					add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)
				
			

多个参数用字典传入。

				
					for i in range(100):
    writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r),
                                    'xcosx':i*np.cos(i/r),
                                    'tanx': np.tan(i/r)}, i)


				
			

作者:LolitaAnn在掘金
链接:https://juejin.cn/post/7151059411350323207
来源:稀土掘金