Xshell远程服务器后Tensorboard的本地可视化方法
在本地显示服务器的tensorbord内容
(全文转自https://blog.csdn.net/a314688122a/article/details/81505082。侵删!!!)
问题
由于tensorflow程序在远程服务器运行,而tensorboard启动后访问地址为:0.0.0.0:6006,导致无法在本机用浏览器访问。
Xshell解决方法
1.不太推荐的方法
可能大家在网上查了许多资料后,看到一种常见的是使用命令
ssh -L 16006:127.0.0.1:6006 -p 端口号 olivier@my_server_ip
之后在服务器上运行tensorboard
tensorboard --logdir=./runs
然后在本机浏览器打开 http://127.0.0.1:16006
该方法最先的出处应该是
https://stackoverflow.com/questions/37987839/how-can-i-run-tensorboard-on-a-remote-server
2.利用Xshell隧道
首先 隧道 在Xshell > 文件 > 属性 > 连接 > SSH > 隧道 > 添加 > 侦听端口与目标端口设置为6006
点添加 , 之后 源主机和目标主机 都是 localhost不变,不要自作聪明去给改成本机IP和服务器地址了。
然后就是一个小技巧了,网上的方法多用本机的16006端口。但其实完全没有必要这样做。
直接将侦听端口 和 目标端口 都设置成6006(tensorboard的访问地址) 即可。

运行方法
在服务器端运行 tensorboard --logdir='model_dir(模型地址)'
or tensorboard --logdir model_dir(模型地址)
本机浏览器访问 localhost:6006 or 127.0.0.1:6006
然后就可以开始愉快的看tensorboard的内容啦
tensorboard在torch中的使用
首先导入tensorboard
from torch.utils.tensorboard import SummaryWriter
这里的SummaryWriter的作用就是,将数据以特定的格式存储到刚刚提到的那个文件夹中。
首先我们将其实例化
writer = SummaryWriter('./path/to/log')
这里传入的参数就是指向文件夹的路径,之后我们使用这个writer对象“拿出来”的任何数据都保存在这个路径之下。
这个对象包含多个方法,比如针对数值,我们可以调用
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)
这样就会生成一个x轴跨度为100的折线图,y轴坐标代表着每一个epoch的mAP。这个折线图会保存在指定的路径下(但是现在还看不到)
同理,除了数值,我们可能还会想看到模型训练过程中的图像。
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 8123
————————————————
版权声明:本文为CSDN博主「L0star」的原创文章。
原文链接:https://blog.csdn.net/a314688122a/article/details/81505082
https://zhuanlan.zhihu.com/p/103630393

浙公网安备 33010602011771号