Ubuntu上PyTorch可视化工具使用指南
一 工具选型与适用场景
二 快速上手 TensorBoard
from torch.utils.tensorboard import SummaryWriter
import torch, torchvision
writer = SummaryWriter(log_dir="runs/exp1")
for epoch in range(10):
loss = torch.rand(1).item()
acc = torch.rand(1).item()
writer.add_scalar("Loss/train", loss, epoch)
writer.add_scalar("Acc/train", acc, epoch)
# 记录示例图像(C×H×W,范围0~1)
img = torch.rand(3, 32, 32)
writer.add_image("sample/input", img, epoch)
writer.close()
三 实时曲线与图像 Visdom
import numpy as np
from visdom import Visdom
viz = Visdom(env="main")
# 实时曲线
x = np.linspace(0, 4*np.pi, 200)
y = np.sin(x)
viz.line(Y=y, X=x, win="sin", opts=dict(title="sin(x)"))
# 图像(H×W×C -> C×H×W)
img = np.random.randint(0, 255, (64, 64, 3), dtype=np.uint8)
viz.image(img.transpose(2, 0, 1), win="rand_img", opts=dict(title="Random Image"))
四 模型结构与计算图可视化
from torchinfo import summary
import torchvision.models as models
model = models.resnet18()
summary(model, input_size=(1, 3, 224, 224))
import torch
from torchviz import make_dot
x = torch.randn(1, 3, 224, 224, requires_grad=True)
model = models.resnet18()
y = model(x)
loss = y.mean()
loss.backward()
dot = make_dot(y, params=dict(model.named_parameters()))
dot.render("resnet18_graph", format="png", cleanup=True) # 生成 resnet18_graph.png
五 训练监控与资源查看
import psutil, os
pid = os.getpid()
proc = psutil.Process(pid)
print(f"CPU Usage: {proc.cpu_percent(interval=1.0)}%")
print(f"Memory RSS: {proc.memory_info().rss / 1024**2:.2f} MB")