1. 导包并创建SummaryWriter
使用SummaryWriter
创建events:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter() # 22984.0
writer = SummaryWriter("test") # 22984.1
writer = SummaryWriter(comment="user") # 22984.2
SummaryWriter()
:自动生成文件夹名称"runs",以及随机的events名称
SummaryWriter("test")
:自动生成文件夹名称"test",以及随机的events名称
SummaryWriter(comment="user")
:自动生成文件夹名称"runs",并附带comment"user",以及随机的events名称
2. writer.add_scalar()
使用add_scalar()将标量添加到event文件中:
add_scalar(tag, scalar_value, global_step=None, walltime=None, new_style=False, double_precision=False)
参数:
- tag(string):数据标识符
- scalar_value(float or string/blobname):保存的数值(纵坐标y)
- global_step(int):时间步数(横坐标x)
一个实验可以记录大量信息。为了避免使 UI 混乱并具有更好的结果聚类分析,我们可以通过分层命名来对绘图进行分组。例如,在参数tag中分别写“Loss/train”,“Loss/test”,“Accuracy/train”,“Accuracy/test”四个数据标识符。“Loss/train”和“Loss/test”将分组在一起,而“Accuracy/train”和“Accuracy/test”将在TensorBoard接口中单独分组。将在第4部分中直观理解。
3. tensorboard访问events
使用tensorboard --logdir=runs
访问 ( '='左右不要有空格;访问后面的路径接的是SummaryWriter生成的文件夹路径而不是生成事件名称; 若只接文件夹名称,终端要提前进入runs所在文件夹):
浏览器访问 http://localhost:6006/
:
4. 例子
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter()
for n_iter in range(100):
writer.add_scalar('Loss/train', np.random.random(), n_iter)
writer.add_scalar('Loss/test', np.random.random(), n_iter)
writer.add_scalar('Accuracy/train', np.random.random(), n_iter)
writer.add_scalar('Accuracy/test', np.random.random(), n_iter)
writer.close()
生成事件目录如下:
tensorboard访问events:
浏览器访问 http://localhost:6006/
:
参考
[1] https://pytorch.org/docs/stable/tensorboard.html
[2] tensorboard_SummaryWriter_event定义及使用示例