前言
记录一下tensorboard的用法。
题外话,有时候显卡被占了,可以用占用显卡的程序的PID号, 输入一下命令,大概知道实在哪里执行的,进而判断是谁用了
ll /proc/【PID号】
后续发现其实也可以在vscode使用remote development连接服务器后,在vs code终端运行tensorboard,然后使用端口转发功能
步骤
首先在本地终端输入
ssh -L 9002:127.0.0.1:9001 username@hostname
其中 username
是你登录服务器的 用户名
, hostname
是 服务器ip
, 9001是待会儿要打开的tensorboard占用的端口(服务器上的
),你也可以换成其他,只要端口没被其他程序占用即可。9002是提供给本地浏览器
访问的端口。
连接成功后,将路径转到你的log文件路径,输入
tensorboard --logdir=./ --port=9001
运行后不要关闭这个终端,在浏览器输入
http://localhost:9002/
即可看到tensorboard面板的数据啦。
常见问题
多个tensorboard版本冲突
ValueError:Duplicate plugins for name projector
参见: tensorboard使用中的坑(ValueError:Duplicate plugins for name projector)
利用site包site.getsitepackages()定位到site-package包所在位置,找到 tensorboard–x.x.xdist-info 删除即可。
SummaryWriter
最近觉得tensorboard真的离不开了…
这里写个小例子
from torch.utils.tensorboard import SummaryWriter
# logs存在Tensorboard_logs目录下
writer = SummaryWriter("Tensorboard_logs")
import time
import random
for step in range(0, 100, 2):
time.sleep(3) # 三秒展示一次, 不会太快可以方便查看运行时查看指标动态变化
# 模拟模型预测
output = random.random() * step / 10 + step + random.randint(0, 5)
target = 80
loss = (output - target) ** 2
print('step {}, loss: {}'.format(step, loss))
writer.add_scalar("mse loss", loss, step)
writer.close()
打开tensorboard后
生成的文件:
若输出加个 / 则会将同样的父目录的名字折叠在一起,例如
writer.add_scalar("bsd68/denoise sigma(15) psnr", psnr_tmp, step)
writer.add_scalar("bsd68/denoise sigma(15) ssim", ssim_tmp, step)