Pytorch加载自定义数据集

vwhgwdsa  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(189)

嘿,我一直在网上寻找关于导入自定义图像集的帮助,但每一个好的教程似乎只是MNIST这是好的,但我不知道如何翻译代码到自定义集。我有一个文件夹结构如下:设置:
|培训
-———-|- -〉A
-———————-|- -〉8000个项目
-———-|- -〉B
-————————-|- -〉8000个项目
|- -〉验证
-———-|- -〉A
-————————-|- -〉600件
-———-|- -〉B
-————————-|- -〉600件
我想在训练集A中的8000个输入图像的集合上训练GAN,以希望学习模仿训练集B
我一直没有运气理解所有的自我继承从MNIST和如何使用它与一个自定义集

3htmauhk

3htmauhk1#

您需要使用从torch.utils.data.Dataset类派生的类来读取图像文件,以便获得自定义数据集。您可以按照文档的这一部分来获得如何填充自定义数据集的基本示例。

from torch.utils.data import Dataset
class CustomImageDataset(Dataset):

使用三种强制方法(请参阅上面的文档)

def __init__(self, img_dir, ...):
def __len__(self):
def __getitem__(self, idx):

你可以创建一个类的示例,并且你可以测试你的代码,通过验证文件的数量是预期的,并且方法可以获取图像-例如使用下面的行:

trainset = CustomImageDataset(train_image_dir) 
print('N of loaded images: {}'.format(len(trainset)) 
first_image, first_label = trainset[0]

最有可能的情况是,您希望init读取RAM中的所有文件,因此您将在init中定义探索路径和加载图片的逻辑。如果我正确理解了您的要求,则可以定义getitem函数,使其返回两个元素,第一个元素是A文件夹中的图像,而第二输出将是B文件夹的相关图像。
之后,您只需示例化验证数据集,而无需定义新类

valset = CustomImageDataset(valid_image_dir)

从这一点开始,您就有了阅读数据的逻辑,然后,您可以让pytorch通过它自己的dataloader实现来处理图像批处理,您不必像前面那样派生dataloader,而只需示例化train_dataloadervalid_dataloader即可

from torch.utils.data import DataLoader
train_dataloader = DataLoader(trainset, batch_size=64, shuffle=True)
valid_dataloader = DataLoader(valset, batch_size=64, shuffle=True)

相关问题