欢迎访问宙启技术站
智能推送

使用DatasetFromFolder()函数创建Python中的数据集

发布时间:2023-12-24 07:36:07

DatasetFromFolder()函数是PyTorch中用于从文件夹中创建数据集的函数。它可以根据文件夹的结构将每个样本的数据和标签加载到数据集中。下面是使用DatasetFromFolder()函数创建数据集的示例。

首先,我们需要导入必要的库。

import torch
from torch.utils.data import Dataset
from torchvision.transforms import ToTensor
from torchvision.datasets import DatasetFolder

假设我们有一个包含图像数据的文件夹,路径为"data/images",其中包含两个子文件夹:"cats"和"dogs"。每个子文件夹中包含对应类别的图像样本。我们可以使用DatasetFromFolder()函数来加载这些图像数据。

class CustomDataset(Dataset):
    def __init__(self, root, transform=None):
        self.dataset = DatasetFolder(root, loader=load_image, extensions='.jpg', transform=transform)
        self.classes = self.dataset.classes

    def __getitem__(self, index):
        return self.dataset[index]

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

在这个示例中,我们自定义了一个名为CustomDataset的数据集类。它继承自PyTorch的Dataset类,并重写了其中的__init__()、__getitem__()和__len__()方法。

在__init__()方法中,我们通过调用DatasetFolder()函数来初始化self.dataset。该函数需要提供数据存储的根目录(root)、图像加载函数(loader)、文件扩展名(extensions)和数据转换(transform)。在这里,我们使用了一个自定义的load_image()函数作为图像加载函数,将图像加载为Tensor对象。可以根据实际需要进行调整。

在__getitem__()方法中,我们通过索引获取对应的数据和标签,并返回。

在__len__()方法中,我们返回数据集的长度。

接下来,我们可以使用这个自定义的数据集类来创建数据集对象,并进行访问和使用。

transform = ToTensor()
dataset = CustomDataset(root='data/images', transform=transform)

# 获取      条数据和标签
data, label = dataset[0]
print(data)
print(label)

# 获取数据集的长度
length = len(dataset)
print(length)

在这个示例中,我们使用了ToTensor()转换函数将图像数据转换为Tensor对象。然后,使用这个自定义的数据集类创建一个名为dataset的数据集对象。

通过索引访问数据集对象dataset可以获取对应的数据和标签。在这里,我们获取了 条数据和标签,并打印输出。

我们也可以直接通过len()函数获取数据集的长度,并打印输出。

上述示例展示了如何使用DatasetFromFolder()函数创建数据集,并进行数据和标签的访问。你可以根据自己的实际需求进行修改和扩展。