python - 计算其中一个 Kaggle Notebook 的模型精度

如何计算 https://www.kaggle.com/code/andrada olteanu/whales-dolphins-effnet-train-rapids-clusters 中使用的 PyTorch 模型的准确度

我尝试使用一些方法,例如 -

  1. 试过这个 → correct += (out == targets).float().sum() accuracy = 100 * correct / len(test) 这给出了奇怪的错误,即

    RuntimeError Traceback(最近一次调用最后一次)/tmp/ipykernel_33/896230284.py in ----> 1 train_pipeline(train) /tmp/ipykernel_33/2939766947.py in train_pipeline(train) 62 # print(targets) 63 ---> 64 正确 += (out == targets).float().sum() 65 # num_corrects = num_corrects + torch.sum(out.argmax(1) == targets) 66 RuntimeError: 张量 a (15587) 的大小必须与非单维 1 的张量 b (32) 的大小相匹配

    1. 试过这个→ num_corrects = num_corrects + torch.sum(out.argmax(1) == targets) print(“Accuracy = {}”.format(train_accuracy))这是给0作为准确性和打印输出和目标给我这个

    输出张量([[ -13.0885, -15.4269, -15.7011, ..., -18.2123, -21.8597, -19.1524], [-13.3293, -12.2672, -14.0315, ..., -17.7681, -22.0472, -18.1889], [-14.6508 , -13.7065, -16.5062, ..., -19.2380, -21.8163, -19.5815], ..., [-15.3698, -16.0767, -14.8986, ..., -18.8057, -22.7389, -19.4303], [ -13.5040, -14.4153, -15.7141, ..., -19.5422, -22.9803, -19.5026] , [-13.8497, -15.1122, -14.3879, ..., -19.5625, -22.6934, -18.4038]], device='cuda:0', grad_fn=) 目标张量([ 2842, 1353, 118, 108, 425 , 168, 2123, 9758, 6036, 748, 443, 1, 102, 12102, 2115, 450, 96, 5147, 998, 1227, 220, 177, 8876, 32, 79, 9920, 65, 43, 1468, , 8002, 13], device='cuda:0') out tensor([[-14.9549, -14.1026, -15.7504, ..., -19.3176, -22.6721, -18.4659], [-11.7263, -12.5097, - ..., -11.8034, -11.9683, -13.8230], [-15.3451, -16.2378, -16.4004, ..., -20.1262, -22.6535, -20.3700], [-14.6429, -15.8015, -15.3850, .. ., -19.8169, -22.2832, -18.9964]], device='cuda:0', grad_fn=) 目标张量([ 8923, 2130, 4607, 12931, 341, 47], device='cuda:0')

    15.5440, ..., -19.5593, -22.9155, -20.5102], [ -4.3821, -9.7733, -3.9627, ..., -11.9340, -11.7187, -12.0451], [ -6.1771, -7.6977, -5.3471,

我在 train_pipeline(train) 中添加了这个准确性的东西

请任何人都可以帮助我,

回答1

由于您没有提供有关 outtargets 张量的确切形状和数据类型的详细信息,我只能提供方法,您必须弄清楚确切的代码。

如果您在模型末尾使用 softmax,则 out 应该是一个大小为 (n_classes, 1) 的张量,其中包含属于每个类的数据点的概率。您必须将该概率向量转换为相应的整数类标签,然后将其 store 转换为(例如)out_labels

还要确保 targets 是一个整数张量,并且包含正确的整数类标签。

经过上述步骤,您可以像这样计算精度 -

accuracy = (out_labels == targets).sum() / len(targets)

(确保 out_labelstargets 都是相同形状的整数张量,以避免遇到任何错误)。

相似文章

随机推荐

最新文章