DataLoader不在PyTorch中随机抽样

时间:2018-05-01 22:27:38

标签: python deep-learning loader pytorch

我的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 个答案:

答案 0 :(得分:2)

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

我对__len__的定义是错误的。

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

我被暂时嘲笑为

def __len__(self):
    return len(0)

而不是真实的东西,比如:

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