赞
踩
官方链接: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中使用端口直接跳转。
点击Forward a Port输入端口如下图所示:
直接输入默认端口6006,然后会显示本地地址。之后点后面的图标可以直接跳转到tensorboard网站。
打算使用关于cifar-10 的分类问题来试一下几个相关方法。
该方法主要是添加模型结构数据进行可视化。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()
效果如图:
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两个图。效果如图:
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)
...
效果如图:
绘制直方图,可以用来绘制权重参数。
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)
效果如图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。