简单记录tensorboard使用中的问题。
首先,使用conda
命令安装后报错:TypeError: init() got an unexpected keyword argument ‘serialized_options’。
使用pip命令安装后,问题解决,推荐用pip
安装:
pip install tensorboard
随后:
# 导入包
from torch.utils.tensorboard import SummaryWriter
# 定义writer
writer = SummaryWriter(log_dir='./log_dir', comment='scalars')
# 往writer中写入值
writer.add_scalar('y=2x', 2*x, y)
# 关闭writer
writer.close()
其中log_dir是日志存放路径,随后在命令行输入指令,进行可视化。
tensorboard --logdir=./log_dir
另外,由于模型常常在服务器中运行,平常还需要在Windows系统中显示服务器中的tensorboard文件的结果。
cmd中登录远程服务器时,使用如下命令:
ssh -L 16006:127.0.0.1:6006 [email protected]
其中account
是服务器中各自设定的用户名,server.address
是服务器主机地址。(代替一般 ssh 远程登录命令:ssh [email protected]
)
训练完模型之后,在Linux正常使用如下命令,进行tensorboard文件的显示:
tensorboard --logdir=./log_dir
最后,在本地浏览器访问地址:http://127.0.0.1:16006/
即可。
Mac未试过,也可尝试一下,Windows亲测有效。
值得注意的是,当可视化一个tensorboard文件之后,更改其他tensorboard文件后,再次执行上述命令,端口号与之前的端口号不同,且再次输入上述命令无法再正常显示,是因为之前的端口号被占用了。
因此,可以查看6006端口的PID进程ID
lsof -i:6006
并将占用这个端口的进程关闭(假设占用该端口的PID为19676):
kill -9 19676
然后再执行上述命令即可,也可以在执行的时候指定端口号:
tensorboard --logdir=./log_dir --port=6006
也可以直接指定另外一个端口号进行。
但是对于Windows下执行Linux中的tensorboard文件,这种情况由于一开始指定了端口号,所以更换端口后会导致无法显示,只能指定端口号,并将占用的PID删除。
参考: