Pytorch 使用 Tensorboard 训练可视化实战笔记

准备工作

  1. pytorch环境,按照网上教程自行配置,执行
import torch
print(torch.__version__)
torch.cuda.is_available()

得到对应的版本号和CUDA可用就没问题,如下:
1

  1. tensorboard安装
    直接命令行pip install tensorboard,完成安装后可以在命令行输入tensorboard调用。

pytorch官方:一旦你安装了TensorBoard,这些实用程序就可以让你记录PyTorch模型。 并将指标放入一个目录中,以便在 TensorBoard UI 中进行可视化。 标量、图像、直方图、图形和嵌入可视化都是 支持 PyTorch 模型和张量以及 Caffe2 网络和 blobs。

官方例程

根据官方的例程熟悉下流程

import torch
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 = torch.nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
images, labels = next(iter(trainloader))

grid = torchvision.utils.make_grid(images)
writer.add_image('images', grid, 0)
writer.add_graph(model, images)
writer.close()

其中writer = SummaryWriter()创建了Writer对象,会默认将结果生成在./runs/目录下。
代码跑完之后就可以在对应的目录下找到生成的文件了。
打开命令行,进入生成文件的目录,执行tensorboard --logdir=runs,我这里进了子目录了就把路径改成了./
1

打开浏览器,上图里面写了打开http://localhost:6006/,直接输入打开就可以看到tensorboard的界面了:

2

根据刚刚的例程:

writer.add_image('images', grid, 0)
writer.add_graph(model, images)

我们的文件里面应该有image和graph两部分,点击上方的IMAGES可以看到图像的信息和操作:I
点开GRAPHS就可以看到网络结构图:在这里插入图片描述
点击Download PNG就可以将当前的计算图下载,我下了个双击ResNet后展开的:
png
图表可视化部分官方给出的例程为:

train_loss = []
train_acc = []
test_loss = []
test_acc = []
writer = SummaryWriter()

for epoch in range(n_epochs):
print(‘epoch {}’.format(epoch + 1))
# 初始化 loss acc
running_loss = 0.0
running_acc = 0.0

for i, data in enumerate(train_loader, 1):
    img, label = data
    img = Variable(img.cuda())
    label = Variable(label.cuda()) # Variable是torch.autograd中很重要的类。
    # 它用来包装Tensor,将Tensor转换为Variable之后,可以装载梯度信息。
    # pytorch的一个重要特点就是动态计算图,计算图中每一个节点代表一个变量,变量间建立运算关系并且可以修改,而不像Tensorflow中的计算图是固定不可变的。
    out = model(img)
    loss = criterion(out, label)
    running_loss += loss.item() * label.size(0)
    _, pred = torch.max(out, 1)
    num_correct = (pred == label).sum()
    accuracy = (pred == label).float().mean()
    running_acc += num_correct.item()
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
train_loss.append(running_loss / (len(train_dataset)))
train_acc.append(running_acc / (len(train_dataset)))
    
print('Finish {} epoch, Loss: {:.6f}, Acc: {:.6f}'.format(epoch + 1, running_loss / (len(train_dataset)), running_acc / (len(train_dataset))))

model.eval()    # 模型评估
eval_loss = 0
eval_acc = 0
for data in test_loader:      # 测试模型
    img, label = data
    img = Variable(img).cuda()
    label = Variable(label).cuda()
    out = model(img)
    loss = criterion(out, label)
    eval_loss += loss.item() * label.size(0)
    _, pred = torch.max(out, 1)
    num_correct = (pred == label).sum()
    eval_acc += num_correct.item()
test_loss.append(eval_loss / (len(test_dataset)))
test_acc.append(eval_acc / (len(test_dataset)))
    
print('Test Loss: {:.6f}, Acc: {:.6f}'.format(eval_loss / (len(test_dataset)), eval_acc / (len(test_dataset))))

writer.add_scalar('loss/train_loss', np.array(train_loss[-1]), epoch)
writer.add_scalar('loss/test_loss', np.array(test_loss[-1]), epoch)
writer.add_scalar('acc/train_acc', np.array(train_acc[-1]), epoch)
writer.add_scalar('acc/test_acc', np.array(test_acc[-1]), epoch)
writer.add_images('1', img, global_step=None, walltime=None, dataformats='NCHW')
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题! 首先,为了使用tensorboardx可视化Pytorch模型,你需要先安装tensorboardX库。你可以通过以下命令来安装: ``` pip install tensorboardX ``` 安装完成后,你需要在你的Pytorch代码中导入tensorboardX: ```python from tensorboardX import SummaryWriter ``` 接下来,在你的代码中创建一个`SummaryWriter`对象,它将负责记录你的模型的数据和可视化: ```python writer = SummaryWriter() ``` 现在你可以在代码中使用`writer`对象来记录任何你想要记录的数据。例如,你可以记录损失函数的值: ```python writer.add_scalar('Loss', loss_value, global_step) ``` 其中`loss_value`是损失函数的值,`global_step`是你的训练步数。 你也可以记录模型的权重和梯度: ```python writer.add_histogram('conv1/weights', conv1.weight, global_step) writer.add_histogram('conv1/grads', conv1.weight.grad, global_step) ``` 这将记录名为`conv1/weights`和`conv1/grads`的直方图,它们分别显示了`conv1`层的权重和梯度。 最后,在你的代码结束时,不要忘记关闭`SummaryWriter`对象: ```python writer.close() ``` 现在你可以在终端中输入以下命令来启动tensorboard: ``` tensorboard --logdir=/path/to/logs ``` 其中`/path/to/logs`是你保存日志文件的路径。然后在你的浏览器中访问`http://localhost:6006`,你将能够看到Pytorch模型的可视化结果。 希望这能够帮助你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值