预测数量与图像数量不匹配

我的验证数据有150张图像,但在使用模型进行预测时,我的预测结果长度只有22,我不明白这是为什么?

total_v=0correct_v=0with torch.no_grad():    model.eval()    for data_v, target_v in (validloader):        if SK:            target_v = torch.tensor(np.where(target_v.numpy() == 2, 1, 0).astype(np.longlong))        else:            target_v = torch.tensor(np.where(target_v.numpy() == 0, 1, 0).astype(np.longlong))                     data_v, target_v = data_v.to(device), target_v.to(device)                 outputs_v = model(data_v)        loss_v = criterion(outputs_v, target_v)        batch_loss += loss_v.item()        _,pred_v = torch.max(outputs_v, dim=1)        correct_v += torch.sum(pred_v==target_v).item()        total_v += target_v.size(0)    val_acc.append(100 * correct_v/total_v)    val_loss.append(batch_loss/len(validloader))    network_learned = batch_loss < valid_loss_min    print(f'validation loss: {np.mean(val_loss):.4f}, validation acc: {(100 *           correct_v/total_v):.4f}\n')

这是我的模型

model = models.resnet50(pretrained = True)num_ftrs = model.fc.in_featuresmodel.fc = nn.Linear(num_ftrs, 2)model.to(device)criterion = nn.CrossEntropyLoss()optimizer = optim.Adagrad(model.parameters())

回答:

如果你想要得到所有的预测结果,你应该存储每个批次的预测结果,并在迭代结束时将它们连接起来

...all_preds = []for data_v, target_v in validloader:     ....     _,pred_v = torch.max(outputs_v, dim=1)    all_preds.append(pred_v)    ....all_preds = torch.cat(all_preds).cpu().numpy()print(len(all_preds))

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注