如何在Pytorch中使用张量板可视化所有预测?

问题描述

我尝试通过预测使实际图像可视化,以弄清楚我的算法如何执行以及错误地预测了哪些标签。但是,当我设置步骤时,在张量板上可视化期间,它不会显示所有步骤。因此,它不会显示所有训练图像及其标签。相反,我只能从所有训练图像中看到几个例子。

writer = SummaryWriter(log_dir='graphs')

def matplotlib_imshow(img):
    npimg = img.cpu().numpy()
    npimg = np.transpose(npimg,(1,2,0))
    plt.imshow((npimg * 255).astype(np.uint8))

def images_to_probs(net,images):
    output = net(images)
    _,preds_tensor = torch.max(output,1)
    preds = np.squeeze(preds_tensor.cpu().numpy())
    return preds,[F.softmax(el,dim=0)[i].item() for i,el in zip(preds,output)]

def plot_classes_preds(net,images,labels):
    preds,probs = images_to_probs(net,images)
    fig = plt.figure(figsize=(6,6))
    for idx in np.arange(4):
        ax = fig.add_subplot(1,4,idx+1,xticks=[],yticks=[])

        matplotlib_imshow(images[idx])
        ax.set_title("{0},{1:.1f}%\n(label: {2})".format(
            classes[preds[idx]],probs[idx] * 100.0,classes[labels[idx]]),color=("green" if preds[idx]==labels[idx].item() else "red"))
    return fig

以下是我的训练循环,其中我将全局步骤用作步骤。

for epoch in range(epochs):
    epoch_start_time = time.time()
    losses = []
    total_batch_images = 0
    batch_correct_pred = 0
    step = 0
    #save model
    # if batch_accuracy>best_acc:
    #     best_acc = batch_accuracy
    #     checkpoint = {'state_dict': model.state_dict(),'acc' : batch_accuracy,'epoch' : epoch,'optimizer': optimizer.state_dict()}
    #     save_checkpoint(checkpoint)

    model.train()
    for batch_idx,(images,labels) in enumerate(train_loader):
        # Get data to cuda if possible
        
        images = images.to(device=device)
        labels = labels.to(device=device)

        # forward
        scores = model(images)
        loss = criterion(scores,labels)

        losses.append(loss.item())

        # backward
        optimizer.zero_grad()
        loss.backward()

        # gradient descent or adam step
        optimizer.step()

        # visualizing Dataset images
        # img_grid = torchvision.utils.make_grid(images)
        # writer.add_image('Xray_images',img_grid,global_step = step)

        # calculation running accuracy
        model.eval()
        _,predictions = scores.max(1)
        num_correct = (predictions == labels).sum()
        batch_correct_pred += float(num_correct)
        total_batch_images += predictions.size(0)

        writer.add_figure('predictions vs. actuals',plot_classes_preds(model,labels),global_step=step)      
        step += 1

我认为问题出在author.add_figure()的最后一行,其中定义了global_step。但是,在这方面的任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...