Lonelysoul丶枫寒
2022-06-28 21:17
采纳率: 33.3%
浏览 11

有关pytorch的shuffle问题

问题遇到的现象和发生背景

目前在使用pytorch做一个表情识别的项目,需要同时加载两个数据集,一个数据集存的是左眼的图片,另一个存的是右眼的图片。这两个数据集分别使用datasets和DataLoader进行了加载。此时面临一个问题,由于两个数据集中的数据是有关联的,比如说,数据集一的第一张图片和数据集二的第一张图片来自同一张人脸,在送入网络的时候希望保持这个顺序不变(网络是双输入通道,分别送入数据集一和数据集二的图片)。如果在DataLoader时使shuffle=True,那么两个数据集都会被打乱,送入网络的图片可能不是来自同一张人脸,这与网络设计的初衷不符,如果shuffle=False,网络的训练就会出问题(目前表现出来的是loss和acc都保持不变)。

问题相关代码

这是我目前的代码


train_dataset_LE = datasets.ImageFolder('../datasets/train/Left_Eye/', train_transform)
train_dataset_RE = datasets.ImageFolder('../datasets/train/Right_Eye/', train_transform)

train_loader_LE = torch.utils.data.DataLoader(train_dataset_LE, batch_size=BATCH_SIZE, shuffle=True)
train_loader_RE = torch.utils.data.DataLoader(train_dataset_RE, batch_size=BATCH_SIZE, shuffle=True)
运行结果及报错内容
我的解答思路和尝试过的方法

尝试使用shuffle=False,但是会导致模型无法训练,所以个人认为应该还是shuffle一下比较好,所以想请教一下,有没有方法使train_loader_LE 和train_loader_RE 使用相同的shuffle方式

1条回答 默认 最新

相关推荐 更多相似问题