pytorch tensorboard

转载:https://zhuanlan.zhihu.com/p/103630393

安装

pip install tensorboard

使用逻辑

  • 将代码运行过程中的,某些你关心的数据保存在一个文件夹中
    这一步由代码中的writer完成
  • 再读取这个文件夹中的数据,用浏览器显示出来
    这一步通过在命令行运行tensorboard完成。

使用代码

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('./path/to/log')
# 针对数值
writer.add_scalar(tag, scalar_value, global_step=None, walltime=None)

这里的tag指定可视化时这个变量的名字,scalar_value是你要存的值,global_step可以理解为x轴坐标。

简单例子

for epoch in range(100)
    mAP = eval(model)
    writer.add_scalar('mAP', mAP, epoch)

除了数值还能展示图像

命令行启动tensorboard

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

然后打开浏览器,访问地址http://localhost:6006/即可。这里的6006只是随便一个例子,用其他的未被占用端口也没有任何问题,注意命令行的端口与浏览器访问的地址同步。
另一点要注意的是tensorboard并不是实时显示(visdom是完全实时的),而是默认30秒刷新一次。

其他使用

1.变量归类
命名变量的时候可以使用形如

writer.add_scalar('loss/loss1', loss1, epoch)
writer.add_scalar('loss/loss2', loss2, epoch)
writer.add_scalar('loss/loss3', loss3, epoch)

这样3个loss就会被显示在同一个section。

2.同时显示多个折线图
假如使用了两种学习率去训练同一个网络,想要比较它们训练过程中的loss曲线,只需要将两个日志文件夹放到同一目录下,并在命令行运行

tensorboard --logdir=./path/to/the/root --port 6006

3.add_scalaradd_scalars

参考:https://www.zhihu.com/question/294537782

法与add_scalar的差别在于add_scalars在一张图中可以绘制多个曲线,我们只需要以字典的形式传入参数即可

add_scalar使用

for epoch, (train_loss, val_loss) in enumerate(zip(train_losses, val_losses)):
            writer.add_scalars('Loss', {'train loss': train_loss, 'val loss': val_loss}, epoch)
    writer.add_scalar('Train', train_loss, epoch)
    writer.add_scalar('Validation', val_loss, epoch)
image-20231228203751338

add_scalars使用

train_losses, val_losses = train(net, *data, num_epochs, learning_rate,weight_decay, batch_size)
writer = SummaryWriter(f'./logs/mynet/fold_{i + 1}')
for epoch, (train_loss, val_loss) in enumerate(zip(train_losses, val_losses)):
	writer.add_scalars('Loss', {'train loss': train_loss, 'val loss': val_loss}, epoch)

image-20231228203823126
posted @ 2023-11-16 09:24  dctwan  阅读(14)  评论(0编辑  收藏  举报