我正在训练动态神经网络,这意味着每个时期我都会调整体系结构并获得不同的计算图。 我想使用张量板来绘制每个时期的图形,但是当我在每个时期的末尾使用SummaryWriter.add_graph()时,它只会覆盖前一个。
有什么想法如何使用pytorch + tensorboard绘制多个图形?每个图都有一个“标签”似乎可以实现,但我发现没有选择更改此标签以绘制其中几个标签的选项。
谢谢, 逃跑
答案 0 :(得分:0)
如果您仍要使用SummaryWriter,则可以选择使用方法“ add_scalars”:
示例:
summary.add_scalars(f'loss/check_info', {
'score': score[iteration],
'score_nf': score_nf[iteration],
}, iteration)
答案 1 :(得分:0)
您可以使用“运行”功能代替“标签”功能。 为此,您必须从将摘要存储在不同子目录中的目录中打开 tensorboard。
在您的示例中,您可以将第一个纪元的摘要保存在目录“tensorboard_log_dir/epoch_1”中,然后将第二个纪元的摘要保存在目录“tensorboard_log_dir/”中epoch_2”等
这样,在使用 tensorboard --logdir=tensorboard_log_dir
时,您将能够通过“运行”小部件从一个计算图切换到另一个计算图。
这是一个可重现的例子:
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.utils.tensorboard import SummaryWriter
dummy_input = (torch.zeros(1, 3),)
# Two different architectures (PyTorch)
class oneLinear(nn.Module):
def __init__(self):
super(oneLinear, self).__init__()
self.l1 = nn.Linear(3, 5)
def forward(self, x):
x = self.l1(x)
return x
class twoLinear(nn.Module):
def __init__(self):
super(twoLinear, self).__init__()
self.l1 = nn.Linear(3, 5)
self.l2 = nn.Linear(5, 5)
def forward(self, x):
x = self.l1(x)
x = F.relu(self.l2(x))
return x
# add graph into 2 distinct subdirectories
with SummaryWriter('./tensorboard_log_dir/oneLinear') as w:
w.add_graph(oneLinear(), dummy_input)
with SummaryWriter('./tensorboard_log_dir/twoLinear') as w:
w.add_graph(twoLinear(), dummy_input)