pytorch中tensorboard使用

官方链接:https://pytorch.org/docs/stable/tensorboard.html
推荐文章:翻滚的小@强

安装

一般来说,直接pip安装就行了。

pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
不过torch使用的tensorboard整体也是由tensorflow简单改过来的,如果使用时有部分问题可以使用导入tensorflow包尝试。

整体工作流程

导入

from torch.utils.tensorboard import SummaryWriter

然后将SummayWriter实例化

writer = SummaryWriter(‘./path/to/log’) 。
#这里是将数据存储到路径中
如果不添加路径的话,将使用默认目录‘./runs/’

之后使用对象中的方法来实现数据的可视化,例如add_graph、add_scalar等。

可视化

数据获取完毕后,只需要在命令行运行:

tensorboard --logdir=runs
然后在浏览器中访问默认端口 localhost:6006/ 即可。也可以在上述命令行后面加上 --port:8012 使用localhost:/8012应该也行。

不过我主要是在vscode中使用端口直接跳转。
vscode添加端口
点击Forward a Port输入端口如下图所示:
在这里插入图片描述
直接输入默认端口6006,然后会显示本地地址。之后点后面的图标可以直接跳转到tensorboard网站。

在这里插入图片描述
在这里插入图片描述

实例

打算使用关于cifar-10 的分类问题来试一下几个相关方法。

writer.add_graph(model,input)

该方法主要是添加模型结构数据进行可视化。model指网络模型,input是对应的输入。

net = LeNet()						  				# 定义训练的网络模型
loss_function = nn.CrossEntropyLoss() 				# 定义损失函数为交叉熵损失函数 
optimizer = optim.Adam(net.parameters(), lr=0.001)  # 定义优化器(训练参数,学习率)
ima,la= next(iter(train_loader))
grid = torchvision.utils.make_grid(ima)
writer.add_image('images',grid,0)
writer.add_graph(net,ima)
writer.close()

效果如图:
在这里插入图片描述 在这里插入图片描述

add_scalar(tag, scalar_value, global_step=None, walltime=None, new_style=False, double_precision=False)

tag (string) – Data identifier
scalar_value (float or string/blobname) – Value to save
global_step (int) – Global step value to record
walltime (float) – Optional override default walltime (time.time()) with seconds after epoch of event
new_style (boolean) – Whether to use new style (tensor field) or old style (simple_value field). New style could lead to faster data loading.

for epoch in range(5):
	....
	for id,data in enumerate(train_loader):
		...
		if step % 100 == 99:
			...
			writer.add_scalar('test/accuracy',accuracy,step)
			writer.add_scalar('test/train_loss',loss.item(),step)
			...

添加值到数据中,代码中test/ 指创建一个test目录,其下有accuracy和loss两个图。效果如图:在这里插入图片描述

add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)

main_tag (string) – The parent name for the tags
tag_scalar_dict (dict) – Key-value pair storing the tag and corresponding values
global_step (int) – Global step value to record
walltime (float) – Optional override default walltime (time.time()) seconds after epoch of event

添加多个数据在同一个图中。

for epoch in range(5):
	....
	for id,data in enumerate(train_loader):
		...
		if step % 100 == 99:
			...
			writer.add_scalars('loss',{'train_loss':loss.item(),
                                            'test_loss':tloss.item()},step)
			...

效果如图:
在这里插入图片描述

add_histogram(tag, values, global_step=None, bins=‘tensorflow’, walltime=None, max_bins=None)

绘制直方图,可以用来绘制权重参数。

tag (string) – Data identifier
values (torch.Tensor, numpy.array, or string/blobname) – Values to build histogram
global_step (int) – Global step value to record
bins (string) – One of {‘tensorflow’,’auto’, ‘fd’, …}. This determines how the bins are made. You can find other options in: https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html
walltime (float) – Optional override default walltime (time.time()) seconds after epoch of event

    for name,param in net.named_modules():
        writer.add_histogram(name+'_grad',param.grad,epoch)
        writer.add_histogram(name+'_data',param,epoch)

在这里插入图片描述

效果如图所示:
在这里插入图片描述 在这里插入图片描述

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值