报错:
File "/home/xinying/self-supervised-relational-reasoning-master/methods/standard.py", line 81, in linear_evaluation
if torch.cuda.is_available(): data, target = data.cuda(), target.cuda()
AttributeError: 'list' object has no attribute 'cuda'
列表list没有cuda属性,要转为tensor
target = np.array(target)# list转numpy.array
target = torch.from_numpy(target) # array2tensor
问题解决
完整代码:
class Living_Body_Test(Dataset):
def __init__(self, test_path,test_transform,**kwds):
super().__init__()
self.test_path = test_path
self.transform = test_transform
self.imgs = []
self.targets = []
fc = open(test_path)
lines = fc.readlines()
for line in lines:
line = line.strip('\n').split(',')
#print('line',line)
image_path = line[0]
target = line[1]
self.imgs.append(image_path)
self.targets.append(int(target))
'''for img in os.listdir(self.img_path):
img_path = os.path.join(self.img_path, img)
self.imgs.append(img_path)'''
def __len__(self):
return len(self.imgs)
def __getitem__(self, index):
#img, target = self.data[index], self.targets[index]
img = Image.open(self.imgs[index].replace('jinfeng','xinying'))
target = self.targets[index]
pic = img
img = np.array(img)
#img = cv2.merge([img,img,img])
#pic = torch.from_numpy(np.array(img))
#pic = np.array(img)
img_list = list()
if self.transform is not None:
img = self.transform(pic.copy())
#img_list.append(img_transformed)
else:
img_list = None
target = np.array(target)
target = torch.from_numpy(target)
#if self.target_transform is not None:
#target = self.target_transform(target)
return img, target