Tensorboard使用
文章目录
安装
pip install tensorboard
使用逻辑
- 使用writer将代码运行过程中关心的数据保存
- 运行tensorboard的使用读取保存的数据,并在浏览器中显示
代码使用
导入
from torch.utils.tensorboard import SummaryWriter
创建写对象
writer = SummaryWriter(PATH) # PATH 保存路径
方法
数值的保存
writer.add_scalar(tag, scalar_value, global_step=None, walltime=None)
- tag:变量的标签
- scalar_value:保存的值
- global_step:横坐标的值
图像的保存
add_image(self, tag, img_tensor, global_step=None, walltime=None, dataformats=‘CHW’)
用于添加单张图片
- img_tensor:图片数据,类型需要是torch.Tensor、numpy.array或者string
- dataformats:‘CHW’指tensor,‘HWC’指numpy
add_images(tag, img_tensor, global_step=None, walltime=None, dataformats='NCHW')
用于添加多张图片
- dataformats:输入图像数据的维度形式:NCHW, NHWC, CHW, HWC, HW, WH,默认为[N,3,H,W]
模型保存
add_graph(model, input_to_model=None, verbose=False)
- model:网络模型
- input_to_model:一个输入的样本实例
- verbose:控制是否打印网络结构的开关语句
启动可视化
tensorboard --logdir=./path --port 8123
任何未被占用的端口都可以使用
tensorboard默认30秒刷新一次,并非实时显示(visdom是完全实时的)
如果使用的是vscode,vscode会提示你在编辑器内打开tensorboard,就不用输入命令行了,十分方便
细节
变量归类
命名变量的时候可以使用形如
writer.add_scalar('loss/loss1', loss1, epoch)
writer.add_scalar('loss/loss2', loss2, epoch)
writer.add_scalar('loss/loss3', loss3, epoch)
的格式,这样3个loss就会被显示在同一个section
同时显示多个折线图
加入使用了两种学习率去训练同一个网络,想要比较他们训练过程中的loss曲线,只需要将他们的日志文件夹放到同一个目录下,运行:
tensorboard --logdir=./path/to/the/root --port 8123
参考
- https://zhuanlan.zhihu.com/p/103630393
sorboard --logdir=./path/to/the/root --port 8123