PyTorch中的可视化工具
TensorflowX的可视化
安装环境
tensorboardX安装在pytorch环境中。
- 先在pytorch环境中安装tensorflow环境以获得tensorboard
- 再pip install tensorboardX安装tensorboardX
常用的方式
TensorboardX可以提供中很多的可视化方式,介绍常用的scalar 和 graph,其他类型相似。
scalar
常被用于生成loss曲线的可视化。
- from tensorboardX import SummaryWriter
- write = SummaryWriter()的参数为:def init(self, log_dir=None, comment=’’, kwargs): 其中log_dir为生成的envents文件所放的目录,comment为envents文件名称。默认目录为当前文件夹目录。SummaryWriter()定义也可以用with 语句,可以免写write.close。推荐使用此方式with SummaryWriter(log_dir=‘logs’, flush_secs=60) as w: 。
- writer.add_scalar(train_loss,train_total_loss, epoch),第一个参数为保存图的名称,第二个参数是为Y轴数据,即因变量。第三个参数为X轴数据,即自变量。
- tensorboard --logdir log_path 启动显示功能。当有多个图同时展示时,可以在logdir同级目录下有多个envents事件。
- 最后在浏览器输入网址即可看到图。
graph
常被用于生成网络结构框架的可视化。
writer.add_graph(model, (graph_inputs,))
第一个参数为需要保存的模型,第二个参数为输入值。
打开tensorvboard控制台,可得到框架图结果。
Visdom的可视化
安装环境
visdom安装在pytorch环境中。
- 直接在pytorch环境中安装pip install
- 再 import visdom
viz = visdom.Visdom(env='train-mnist')
viz.image(torchvision.utils.make_grid(next(iter(train_dataloader))[0], nrow=8), win='train-image')
viz.line(Y=np.array([tr_loss]), X=np.array([iter_count]), update='replace', win=loss_win)
viz.line(Y=np.column_stack((np.array([tr_acc]), np.array([ts_acc]))),
X=np.column_stack((np.array([iter_count]),
np.array([iter_count]))),
win=acc_win, update='replace',
opts=dict(legned=['Train_acc', 'Val_acc']))
可视化
- 先在一个终端上python -m visdom.server,会跳出屏幕上跳出来:
Checking for scripts.
It’s Alive!
INFO:root:Application Started
You can navigate to http://localhost:8097
这就代表你启动visdom成功! - 运行你的可视化代码
- 在浏览器上输入127.0.0.1:8097,就会出现visdom的界面了
可能遇到的问题
- 启动python3 -m visdom.server的时候,出现报错:“address already in use”。
解决:说明地址被占用了。
- 先在命令行中输入:lsof -i tcp:8097,其中8097是端口号。会显示用这个端口的进程。
- 用kill -9 PID #where PID is the process id returned by lsof,杀掉这个占用的进程。
- 这时候再输入:lsof -i tcp:8097,就没有内容返回了。同时网页也打不开了。
- 再重新输入:python3 -m visdom.server,就不会报错了。
参考:
- https://www.jianshu.com/p/ea49c3d83db1