Mon*_*eck 3 python loader deep-learning 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]
. . .
Run Code Online (Sandbox Code Playgroud)
这是数据集:
train_ds = MyDataset('/data')
Run Code Online (Sandbox Code Playgroud)
这是我的采样器:
train_sampler = RandomSampler(train_ds)
Run Code Online (Sandbox Code Playgroud)
这是我的数据加载器:
train_dl = DataLoader(train_ds, batch_size=1, sampler=train_sampler)
Run Code Online (Sandbox Code Playgroud)
我不确定为什么在训练期间它每次都会返回相同的图像。
是我RandomSampler设置不完整吗?或者也许我写错了__getitem__?我想不通。
啊哈。好吧,如果有人最终遇到同样的问题,我知道它是什么,也许这会有所帮助。
我的定义__len__是错误的。
我想随机采样器取决于您如何设置长度方法。
我的暂时被模拟为
def __len__(self):
return len(0)
Run Code Online (Sandbox Code Playgroud)
而不是真实的东西,例如:
def __len__(self):
return len(self.images)
Run Code Online (Sandbox Code Playgroud)