简单记录tensorboard使用中的问题。
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下查看Linux中的tensorboard文件
另外,由于模型常常在服务器中运行,平常还需要在Windows系统中显示服务器中的tensorboard文件的结果。
cmd中登录远程服务器时,使用如下命令:
ssh -L 16006:127.0.0.1:6006 account@server.address
其中account
是服务器中各自设定的用户名,server.address
是服务器主机地址。(代替一般 ssh 远程登录命令:ssh account@server.address
)
训练完模型之后,在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删除。
参考:
- Pytorch深度学习——Tensorboard的使用:https://blog.csdn.net/qq_43263543/article/details/123612531
- 系统学习Pytorch笔记八:Tensorboard可视化与Hook机制:https://blog.csdn.net/wuzhongqiang/article/details/105612607
- Tensorboard 详解(上篇):https://blog.csdn.net/fendouaini/article/details/80344591
- Is it possible to see tensorboard over ssh?:https://stackoverflow.com/questions/38513333/is-it-possible-to-see-tensorboard-over-ssh
- 在服务器使用TensorBoard的方法:https://www.csdn.net/tags/MtTacgysNDc5NDQtYmxvZwO0O0OO0O0O.html
- tensorboard学习—— 解决tensorboard attempted to bind to port 6006,but it was already in use问题的几种方法:https://blog.csdn.net/c20081052/article/details/81974847
文章出处登录后可见!