首页 > 解决方案 > 在 Pytorch tensorboard 中绘制多张图

问题描述

我正在训练一个动态神经网络,这意味着每个时期我都会调整架构并获得不同的计算图。我想使用 tensorboard 为每个时期绘制图表,但是当我在每个时期结束时使用 SummaryWriter.add_graph() 时,它只会覆盖前一个。

任何想法如何使用 pytorch + tensorboard 绘制多个图形?这似乎是可以实现的,因为每个图表都有一个“标签”,但我发现没有选项可以更改这个标签来绘制其中的几个。

谢谢, 埃拉德

标签: pytorchtensorboard

解决方案


您可以使用“运行”功能,而不是使用“标签”功能。为此,您必须从将摘要存储在不同子目录中的目录中打开 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)

推荐阅读