下面是增加展示具体每个类别分类精度的函数的代码示例:

def show_class_accuracy(model, dataloader, device):
    # Set the model to evaluation mode
    model.eval()

    # Initialize variables to store accuracy for each class
    class_correct = [0] * len(dataloader.dataset.classes)
    class_total = [0] * len(dataloader.dataset.classes)

    # Iterate over data
    with torch.no_grad():
        for inputs, labels in dataloader:
            inputs = inputs.to(device)
            labels = labels.to(device)

            # Forward pass
            outputs = model(inputs)

            # Get predicted class labels
            _, predicted = torch.max(outputs, 1)

            # Update class accuracy variables
            for i in range(len(labels)):
                label = labels[i]
                class_correct[label] += (predicted[i] == label).item()
                class_total[label] += 1

    # Print accuracy for each class
    print('Accuracy for each class:')
    for i in range(len(dataloader.dataset.classes)):
        acc = 100 * class_correct[i] / class_total[i]
        print('  ' + dataloader.dataset.classes[i] + ': {:.2f}%'.format(acc))

    # Print overall accuracy
    overall_acc = 100 * sum(class_correct) / sum(class_total)
    print('Overall accuracy: {:.2f}%'.format(overall_acc))

这个函数会计算每个类别的分类精度,并打印出来。它接受三个参数:modeldataloaderdevicemodel 是训练好的模型,dataloader 是数据集的 DataLoader,device 是模型所在的设备 (GPU 或 CPU)。

使用这个函数很简单,只需要在训练好模型后调用它即可:

show_class_accuracy(model, test_dataloader, device)

其中 model 是训练好的模型,test_dataloader 是测试集的 DataLoader,device 是模型所在的设备 (GPU 或 CPU)。


原文地址: https://www.cveoy.top/t/topic/oYhY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录