我的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__
?我无法理解。
答案 0 :(得分:2)
啊哈。好吧,如果有人在这里遇到同样的问题,我会弄清楚它是什么,也许这会有所帮助。
我对__len__
的定义是错误的。
我猜随机采样器取决于你如何设置长度方法。
我被暂时嘲笑为
def __len__(self):
return len(0)
而不是真实的东西,比如:
def __len__(self):
return len(self.images)