最近在调试自己用pytorch搭建的神经网络,理论上来说网络结构是比较合理的,但总是train不出来。由于没有输出中间的权重参数,也不知道问题到底出在哪,所以决定尝试一下对训练过程进行可视化。
常见的pytorch可视化有两种工具:Visdom和TensorboardX。这里主要尝试根据教程使用TensorboardX。
准备工作
pytorch环境
python 3.7
pytorch 1.0
cuda 10
numpy 1.15.4
安装TensorboardX
pip install tensorboardX
pip install tensorboard
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # pip换源,加快下载速度
pip install tensorflow
TensorboardX可视化
代码部分
在我的网络里,我主要实现了下边几个可视化:
- 权重直方图可视化
- 模型图可视化
tensorboard导入并初始化
from tensorboardX import SummaryWriter
# 定义Summary_Writer
writer = SummaryWriter('./Result') # 数据存放在这个文件夹
权重直方图可视化
涉及函数:
add_histogram绘制直方图
用于代码中:
for name, param in model.named_parameters():
writer.add_histogram(name,param.clone().cpu().data.numpy(), idx)
图模型可视化
with writer:
writer.add_graph(model, model_input)
我自己搭建的网络,测试报错,据说标准网络可以使用。
tensorboard服务启动
因为我的代码是在远程服务器上运行的,所以这个方法适用于在远程跑代码的同学。
- 登录远程容器
ssh -L 6006:127.0.0.1:6006 root@主机名(ip)-p 端口号
- 通过
cd
命令进入存放数据文件夹的上级文件夹,并输入以下命令开启tensorboard服务
tensorboard --logdir 存放数据文件夹名
- 在本地谷歌浏览器中输入ip地址
127.0.0.1:6006
即可
相关图例介绍
相关图例解释可在TensorFlow官网看到,例如TensorBoard 直方图信息中心
参考文献:
Pytorch训练可视化(TensorboardX)
tensorboardX的GitHub
远程访问Tensorboard