You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ImageNet分类:预训练VGG11 Top-5错误率异常偏高问题排查

准确率计算验证

你的计算是正确的,返回结果中Top-5错误率为0.99607,对应Top-5准确率为1 - 0.99607 = 0.393%,Top-1准确率仅为0.102%,远低于torchvision预训练VGG11的公开基准水平(正常Top-1准确率约69%,Top-5准确率约89%),说明预测流程存在明确错误。

你收到的服务器返回原始内容如下:

Error: 0.99607 (top-5)  0.99898 (top-1)
Per-class error (classes 1-1000):
1 1
1 1
1 1
...
可能的出错环节

你已确认测试图像按字母顺序加载,排除样本顺序错配的前提下,结合你提供的实现代码,问题大概率出在以下环节,按概率从高到低排序:

  • 类别索引映射不匹配:这是导致错误率接近100%的最核心原因。datasets.ImageFolder会自动按照数据集子文件夹名称的字母顺序,从0开始分配类别标签,但ImageNet官方评估服务器使用的1000类标签是按照固定WordNet ID映射排序的,和文件夹名字母序完全不一致。你输出的预测类别编号和服务器端的真值编号无法对应,自然会得到几乎全错的结果。
  • 预处理逻辑隐性错误:你当前写的Resize(256)+CenterCrop(224)+标准化的流程本身和预训练权重适配的处理逻辑一致,但如果Resize调用时未匹配预训练使用的插值方式、或者图像加载时出现通道顺序错位(比如误把PIL读取的RGB图转成BGR),也会导致预测结果异常,但这类问题一般不会让错误率高到接近100%。
  • 输出索引偏移:部分旧版本torchvision的预训练VGG11权重对应的类别顺序,和官方ImageNet评估列表存在1位索引差,但这类问题只会让准确率小幅下降,不会出现几乎全错的情况。
参考实现代码

你提供的代码如下:

vgg11 = models.vgg11(pretrained=True)
vgg11.to(torch.device("cuda"))
vgg11.eval()
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])


test_loader = torch.utils.data.DataLoader(datasets.ImageFolder("test_dataset",
                                                               transforms.Compose([
                                                                   transforms.Resize(256),
                                                                   transforms.CenterCrop(224),
                                                                   transforms.ToTensor(),
                                                                   normalize
                                                                   ])),
                                          batch_size=32, shuffle=False)
fp = open("predictions.txt", "w")
for a, b in tqdm(test_loader):
    preds = vgg11(a.cuda())
    _, preds = torch.topk(preds, k=5, dim=1)
    preds = preds.cpu().detach().numpy()
    for i in range(len(preds)):
        fp.write(" ".join(str(j) for j in preds[i])+"\n")
fp.close()
排查建议

优先核对类别映射关系:先选取数张类别明确的ImageNet验证集图片做本地预测,确认模型输出的类别编号和评估服务器要求的编号规则一致,修正映射关系后准确率会立刻回到正常区间。

内容的提问来源于stack exchange,提问作者Atif Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:09:24