Home Articles

DataLoader不在PyTorch中随机抽样

Asked
Viewed 716 times
2

我的DataLoader每个时代都返回相同的图像 . 我的模型每次只查看相同的单个图像(索引为'0')(批量大小为1 ...但不管批量大小如何都没有变化,无论如何) .

这是我的数据集,剥离到重要的位:

class MyDataset(Dataset):

    def __init__(self, path, loader=pil_loader):
        self.path = path
        self.images = os.listdir(path)

    def __getitem__(self, index):
        image = self.images[index]

    . . .

这是DataSet:

train_ds = MyDataset('/data')

这是我的采样器:

train_sampler = RandomSampler(train_ds)

这是我的DataLoader:

train_dl = DataLoader(train_ds, batch_size=1, sampler=train_sampler)

我不确定为什么每次在训练期间它都会返回相同的图像 .

我的 RandomSampler 设置不完整吗?或者也许我错误地写了 __getitem__ ?我无法弄清楚 .

1 Answer

  • 0

    啊哈 . 好吧,如果有人在这里遇到同样的问题,我会弄清楚它是什么,也许这会有所帮助 .

    我对 __len__ 的定义是错误的 .

    我猜随机采样器取决于你如何设置长度方法 .

    我被暂时嘲笑为

    def __len__(self):
        return len(0)
    

    而不是真实的东西,如:

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

Related