首页 > 解决方案 > 0-dim 张量的无效索引。使用 tensor.item() 将 0-dim 张量转换为 Python 数字

问题描述

我正在使用 PyTorch 教程来计算每个类的准确性,它会抛出一个错误,使用tensor.item()已经存在的错误class_correct[target] += c[i].item()

class_correct = list(0. for i in range(15))
class_total = list(0. for i in range(15))

with torch.no_grad():

    for ii, data in enumerate(test_loader): 

        t_image, target, classess, image_path  = data

        t_image = t_image.to(device)
        target = target.to(device)

        outputs = model(t_image)

        _, predicted = torch.max(outputs, 1)
        c = (predicted == target).squeeze()

        for i in range(4):
            target = target[i]
            class_correct[target] += c[i].item()
            class_total[target] += 1

for i in range(14):
    print('Accuracy of %5s : %2d %%' % (
        classes[i], 100 * class_correct[i] / class_total[i]))  

任何评论将不胜感激。

标签: pytorch

解决方案


由于c.shape,torch.Size([])不是列表。所以它有错误。您可以使用c.item().


推荐阅读