为什么我的预测函数会出错?ValueError:没有足够的值进行解压缩(应为2,实际为1)



我正在尝试使用UNET和pytorch使用预训练的二进制分割模型进行预测。这是我的代码:model.eval((#将模型设置为评估模式

class SimDataset(Dataset):
def __init__(self, path, transform=None, isMask=False):

self.m = ("test")
self.path = path
self.transform = transform
self.isMask = isMask

def __len__(self):
return len(self.path)

def __getitem__(self, idx):     
one_image = os.path.join(self.m, self.path[idx]) # preparing image path/location
img_temp = Image.open(one_image) # load RGB input image

if self.transform:
image = self.transform(img_temp)

input_image = np.array(img_temp).astype('float32') # converting one image to np array
input_image = np.transpose(input_image, (2, 0 ,1)) # converting from hwc to chw [(256,256,3) => (3, 256, 256)]

return [input_image]
testlist = list(os.listdir(r"test"))
len(testlist)
image_datasets = {
'testlist': testlist
}
dataset_sizes = {
x: len(image_datasets[x]) for x in image_datasets.keys()
}
test_dataset = SimDataset(testlist, transform = trans, isMask=False)
test_loader = DataLoader(test_dataset, batch_size=3, shuffle=False, num_workers=0)
inputs, labels = next(iter(test_loader))
inputs = inputs.to(device)
labels = labels.to(device)
pred = model(inputs)
pred = torch.sigmoid(pred)
pred = pred.data.cpu().numpy()
print(pred.shape)

但它显示出错误地说->ValueError:没有足够的值进行解压缩(应为2,实际为1(。

您的代码需要数据加载器的两个输出:

inputs, labels = next(iter(test_loader))

但是,数据集中的__getitem__方法只返回单个输出:

return [input_image]

要么从__getitem__返回两个输出,包括图像和标签。或者期望test_loader仅输出单个

相关内容

最新更新