1
testdataset = Mydataset(device="des2", train_val_test_mode='tets')
1
2
3
4
5
6
if self.train_val_test_mode == 'train' or self.train_val_test_mode =='val':
self.train_list, self.val_list = \
train_test_split(self.image_list, test_size=val_percent,
train_size=1 - val_percent, random_state=1000)
else:
self.test_list = self.image_list

在dataloader 中加入新的分类,test_list类。

发现,出错,报错显示

1
TypeError: 'NoneType' object cannot be interpreted as an integer

解决

1
2
3
4
5
6
7
8
9
def __len__(self):
# 这里重要,不是原本的总list,而是分割后的list
if self.train_val_test_mode == "train":
return len(self.train_list)
elif self.train_val_test_mode == "val":
return len(self.val_list)
else:
# bug 此处的len self.test一定要写
return len(self.test_list)

在dataloader的 __ len __函数里面加入mode = test情况的数据集len,

否则此时无法读取数据集的长度。