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左右。
小智 5
在日志记录端内部进行了缓存。要查看这是否是问题,请创建您的 SummaryWriter
writer = SummaryWriter(flush_secs=1)
Run Code Online (Sandbox Code Playgroud)
看看事情是否会立即更新。如果是这样,请随时为您的情况调整 flush_secs(默认为 120)。不过,根据您的描述,这可能来自 TensorBoard 可视化方面。如果是这样,它一定与轮询间隔有关。
安装 TensorFlow(强制 TensorBoard 使用不同的文件系统后端)是否会为您改变这种行为?
| 归档时间: |
|
| 查看次数: |
5169 次 |
| 最近记录: |