pytorch使用tensorboardX进行loss可视化实例
作者:YongjieShi 发布时间:2021-04-07 20:17:36
最近pytorch出了visdom,也没有怎么去研究它,主要是觉得tensorboardX已经够用,而且用起来也十分的简单
pip install tensorboardX
然后在代码里导入
from tensorboardX import SummaryWriter
然后声明一下自己将loss写到哪个路径下面
writer = SummaryWriter('./log')
然后就可以愉快的写loss到你得这个writer了
niter = epoch * len(train_loader) + i
writer.add_scalars(args.result_path + 'Train_val_loss', {args.result_path+'train_loss': loss.data.item()}, niter)
其中,add_scalars是将不同得变量添加到同一个图下,图的名称是add_scalars得第一个变量
然后为这个图中不同得曲线添加不同得标题,上面这一行代码
writer.add_scalars(args.result_path + 'Train_val_loss', {args.result_path+'train_loss': loss.data.item()}, niter)
后面得dict中得key是曲线的名称,后面的value是对应得append的值,再后面得niter是x坐标,这句话得意思就相当于,对于图名称为args.result_path + 'Train_val_loss'的图,对曲线名称为args.result_path+'train_loss'添加新的点,这个点为(niter, loss.data.item())
同样的,我可以画出val的loss
niter = epoch * len(train_loader) + i
writer.add_scalars(args.result_path + 'Train_val_loss', {args.result_path+'val_loss': mean_loss}, niter)
writer保存到了我们刚刚声明的路径'./log‘下面,然后终端启动tensorboard
tensorboard --logdir ./log --port 8890
不会用得进行tensorboard --help即可
然后进行端口映射就行了
实际上在使用的过程中,我发现了,如果你要保存的结果在各个子文件夹内,然后你在父文件夹运行tensorboard,就可以在浏览器看到各种结果,而不必再进行不同的端口映射
比如上面这个,我的resnet文件夹下有不同的我writer写入的文件,在父目录下启动tensorboard之后,
没毛病!
补充拓展:pytorch产生loss的计算图代码
废话不多说,直接上代码
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net,self).__init__()
self.conv1=nn.Conv2d(1,6,5)
self.conv2=nn.Conv2d(6,16,5)
self.fc1=nn.Linear(16*5*5,120)
self.fc2=nn.Linear(120,84)
self.fc3=nn.Linear(84,10)
def forward(self,x):
x=F.max_pool2d(F.relu(self.conv1(x)),(2,2))
x=F.max_pool2d(F.relu(self.conv2(x)),2)
x=x.view(x.size()[0],-1)
print(x)
x=F.relu(self.fc1(x))
x=F.relu(self.fc2(x))
x=self.fc3(x)
return x
net=Net()
#params=list(net.parameters())
#for name,parameters in net.named_parameters():
# print(name,':',parameters.size())
#print(len(params))
#print(net)
input=Variable(t.randn(1,1,32,32))
output=net(input)
#out.size()
target=Variable(t.arange(0,10))
criterion=nn.MSELoss()
loss=criterion(output,target)
loss.grad_fn
来源:https://blog.csdn.net/u013517182/article/details/93043942
猜你喜欢
- 部署环境:安装版本red hat Cent 7.0MYSQL 版本 8.0.2.0成功部署完毕后出现故障情况:1. &
- Numpy中的N维数组(ndarray)Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。在 Numpy
- 可怜我的C盘本来只有8.XG,所以不得不卸载掉它。卸载掉本身没啥问题,只是昨晚突然发现 Sql Server 2008 R2 Managem
- 本文实例讲述了Python实现扩展内置类型的方法。分享给大家供大家参考,具体如下:简介除了实现新的类型的对象方式外,有时我们也可以通过扩展P
- json数据:[{"authenticate":-99,"last_ip":"156.2.
- 导言在前面一些教程中,我们已经看到如何使用应用程序框架,ObjectDataSource,以及那些提供增、改、删功能的数据Web控件。在我们
- 记录一下今天被坑了一下午的BUG就从半个月前说起吧当时...........................................
- declare @PageNumber int declare @PageSize int set @PageNumber=2 set @P
- 开通QQ邮箱POP3/SMTP服务登录QQ邮箱网址,进入设置选择账户tab页翻到最低下开启此服务获取qq邮箱授权码搭建node接口服务思路创
- 有的时候,我们为了保持网页的美观,需要将较长的文字在一定长度时截断。比如我们希望在列表中显示文章标题的前15个字,那么一个这样的标题:“rs
- 简介Python 的序列(sequence)通常指一个可迭代的容器,容器中可以存放任意类型的元素。列表和元组这两种数据类型是最常被用到的序列
- 前言本篇文章要使用OpenCV、Numpy 和Math这3个工具包实现一个简单的滤镜编辑器。在这个滤镜编辑器中,包含了3种滤镜效果,它们分别
- python 连接数据库操作, 方法如下:在本机的mysql 数据库中有一个名为yao的库,其中有一个名为user的表,表中的内容如图下面,
- 随着手机用户的不断增加,WAP站点如雨后春笋迅速的滋长开来,手机邮箱也不断的出现在人的眼前,笔者也曾经开发了一套手机邮箱的系统,但由于时间仓
- 咱们用的os模块,读取文件的时候,其实他是含有__enter__ __exit__ 。 一个是with触发的时候,一个是退出的时
- 如何解决bootStrapValidator bootStrap-select验证不可用,只要三步:思路:把多选下拉框的选中值,赋给一个隐藏
- 有使用过VS2005开发工具的朋友或者其他语句如js中都有Try catch 语句块,那么在mysql中是否能有SQLserver的@@er
- Windows中升级MySQL应采取的步骤:1. 进行升级前你应先备份当前的MySQL安装。2. 下载最新Windows版MySQL。3.
- 一、函数的变量作用域和可见性1.全局变量在main函数执行之前初始化,全局可见2.局部变量在函数内部或者if、for等语句块有效,使用之后外
- 环境搭建1、下载所需的软件包:(1)python安装包(2)django安装包以下2个包其实是安装python包管理工具,在后面安装djan