为什么 TensorBoard 摘要没有更新?

luc*_*ang 5 tensorflow tensorboard pytorch

我使用带有 pytorch1.1 的 tensorboard 来记录损失值。

writer.add_scalar("loss", loss.item(), global_step)在每个 for- 循环体中使用。

但是,在训练处理期间绘图图不会更新。

每次想看到最新的损失,都得重启tensorboard服务器。

代码在这里

import torch
import torch.nn as nn
import torch.nn.functional as F
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torchvision import datasets, transforms

# Writer will output to ./runs/ directory by default
writer = SummaryWriter()

transform = transforms.Compose(
    [transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]
)
trainset = datasets.MNIST("mnist_train", train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
model = torchvision.models.resnet50(False)
# Have ResNet model take in grayscale rather than RGB
model.conv1 = nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
model.fc = nn.Linear(2048, 10, True)

criterion = nn.CrossEntropyLoss()

epochs = 100

opt = torch.optim.Adam(model.parameters())

niter = 0

for epoch in range(epochs):
    for step, (x, y) in enumerate(trainloader):
        yp = model(x)
        loss = criterion(yp, y)
        opt.zero_grad()
        loss.backward()
        opt.step()
        writer.add_scalar("loss", loss.item(), niter)
        niter += 1
        print(loss.item())

grid = torchvision.utils.make_grid(images)
writer.add_image("images", grid, 0)
writer.add_graph(model, images)
writer.close()
Run Code Online (Sandbox Code Playgroud)

训练还在继续,全局步数已经是3594了,但是tensorboard还是显示在1900左右。

在此处输入图片说明

Ism*_*IFI 6

同样对于单次运行有多个事件日志文件的人,您需要使用以下命令启动张量板 --reload_multifile True


小智 5

在日志记录端内部进行了缓存。要查看这是否是问题,请创建您的 SummaryWriter

writer = SummaryWriter(flush_secs=1)
Run Code Online (Sandbox Code Playgroud)

看看事情是否会立即更新。如果是这样,请随时为您的情况调整 flush_secs(默认为 120)。不过,根据您的描述,这可能来自 TensorBoard 可视化方面。如果是这样,它一定与轮询间隔有关。

安装 TensorFlow(强制 TensorBoard 使用不同的文件系统后端)是否会为您改变这种行为?