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

使用DatasetFromFolder()函数加载文件夹数据集的Python代码示例

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

使用DatasetFromFolder()函数加载文件夹数据集的Python代码示例:

import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms

# 定义自定义数据集类
class CustomDataset(Dataset):
    def __init__(self, folder_path, transform=None):
        self.data = []
        self.labels = []
        self.transform = transform
        
        # 遍历文件夹,读取数据和标签
        for label in os.listdir(folder_path):
            label_path = os.path.join(folder_path, label)
            if os.path.isdir(label_path):
                for image_name in os.listdir(label_path):
                    image_path = os.path.join(label_path, image_name)
                    self.data.append(image_path)
                    self.labels.append(label)
        
    def __len__(self):
        return len(self.data)
    
    def __getitem__(self, index):
        image = Image.open(self.data[index])
        label = self.labels[index]
        
        if self.transform:
            image = self.transform(image)
        
        return image, label

# 定义数据增强的转换
transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])

# 加载数据集
dataset = CustomDataset('folder_path', transform=transform)

# 创建数据加载器
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

# 使用例子:
for images, labels in dataloader:
    # 在这里进行模型的训练和预测操作
    pass

以上代码示例中,定义了一个CustomDataset类,从文件夹中读取数据和标签,并在__getitem__方法中应用了数据增强的转换。

然后,将CustomDataset实例化为dataset对象,并设置好了一些参数,例如图像大小、标准化等。

最后,通过DataLoader将数据集加载到内存中,并设置好批量大小、是否打乱数据等参数。

使用例子部分展示了如何使用数据加载器进行模型的训练和预测操作。其中,images变量包含了一批图像数据,labels变量包含了对应的标签数据。在这里可以根据需要进行模型训练和预测操作。

需要根据实际情况修改代码中的文件夹路径、转换操作等参数,以适应具体的数据集。