说明
网络搭建好了以后如何更加直观地去看网络结构?
在网络训练的时候能不能实时看训练loss的结果?
tensorboardX以及visidom是一个非常好的工具,本文介绍如何使用。
tensorboardX
GitHub:https://github.com/lanpa/tensorboardX
使用
from tensorboardX import SummaryWriter
writer = SummaryWriter('logs')
# writer.add_image()
# y=x
for i in range(100):
writer.add_scalar('y=x', i, i) #在当前路径下创建新的log文件
writer.close()
在cmd输入:
tensorboard --logdir=logs
文章参考:
https://www.jianshu.com/p/46eb3004beca
torch自带的tensorboard
PyTorch 从 1.2.0 版本开始,正式自带内置的 Tensorboard 支持了,我们可以不再依赖第三方工具来进行可视化。
安装
https://www.pytorchtutorial.com/pytorch-builtin-tensorboard/
pip安装
pip install --upgrade torch torchvision
pip install tensorboard
使用
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter(PATH_to_log_dir)
启动 Tensorboard:
在cmd输入:
tensorboard --logdir=C:\Users\net5\Desktop\lstm\view_log_lstmatt --port 6006
visidom
Visdom的使用
在cmd输入:
python -m visdom.server
会分配一个类似tensorboard的服务器IP,loaclhost:…
然后复制该IP在网站打开,
后面然后正常写代码就可以了,代码作出的图都是在这个界面上作出来的!
Visdom有一系列的内置函数,可以在官网查看https://www.bootcdn.cn/vidom/ https://github.com/dfilatov/vidom
实时曲线,这是最重要的,也是个人觉得在模型训练超废时间的时候最有用的,如果在训练的过程种发现训练集和测试集loss不是很对劲,及时止损。。。
from visdom import Visdom
viz = Visdom()
viz.line([0.], #Y的第一个点
[0.], #X的第一个点
win="train loss", #右上角窗口的名称
opts=dict(title='train_loss') #opt的参数都可以用python字典的格式传入,还有很多其他的类似matplotlib美化图形的参数参考官网
)
viz.line([1,],#Y的下一个点
[1.],#X的下一个点
win="train loss",
update='append'#添加到下一个点后面
)#这样在训练的时候把作图函数放在for循环里就可以作出loss图了
loss实时显示:
#绘制loss变化趋势,参数一为Y轴的值,参数二为X轴的值,参数三为窗体名称,参数四为表格名称,参数五为更新选项,从第二个点开始可以更新 vis.line(Y=np.array([totalloss.item()]), X=np.array([traintime]),
win=('train_loss'),
opts=dict(title='train_loss'),
update=None if traintime == 0 else 'append'
)
参考文章:
https://www.pytorchtutorial.com/pytorch-visdom/
https://blog.csdn.net/young1973/article/details/105509730
https://blog.csdn.net/B1151937289/article/details/106169017