pytorch加载自己的数据集,重写Dataset类

len 方法,提供了dataset的大小; getitem 方法, 该方法支持从 0len(self)的索引。

 #filenames是训练数据文件名称列表,labels是标签列表
class MyDataset(Dataset):
    def __init__(self, filenames, labels, transform):
        self.filenames = filenames
        self.labels = labels
        self.transform = transform
 
    def __len__(self):
        return len(self.filenames)
 
    def __getitem__(self, idx):
        image = Image.open(self.filenames[idx]).convert('RGB')
        image = self.transform(image)
        return image, self.labels[idx]

这样,就得到了Dataset类型的数据,接下来可以直接用Dataloader加载了。

重写完Dateset的类之后,需要执行的工作包括:

  • 初始化数据集类
  • 设置torch.util.Dataset的参数,例如batch_size等参数

1、重写数据集类

 train_dataset = MyDataset(filenames, labels, transform)

2、加载数据集

   train_loader = torch.utils.data.DataLoader(train_dataset,
                                               batch_size=self.state['batch_size'], shuffle=True,
                                               num_workers=self.state['workers'])

即可完成。

你可能感兴趣的:(pytorch加载自己的数据集,重写Dataset类)