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

使用DatasetFromFolder()函数生成PyTorch中的图像数据集示例代码

发布时间:2023-12-24 07:38:52

PyTorch中的DatasetFromFolder()函数可以用来创建一个图像数据集,从指定的文件夹中读取图像文件,并将其转换为PyTorch中的Dataset对象。以下是一个使用DatasetFromFolder()函数生成图像数据集的示例代码:

import torch
from torchvision.transforms import ToTensor
from torchvision.datasets import DatasetFromFolder

# 定义数据集的文件夹路径
data_folder = 'path/to/dataset/folder'

# 定义转换函数
transform = ToTensor()

# 创建图像数据集对象
dataset = DatasetFromFolder(data_folder, transform)

# 获取数据集的大小
dataset_size = len(dataset)
print('数据集大小: ', dataset_size)

# 获取      个图像样本
image, label = dataset[0]
print('图像大小: ', image.size())
print('标签: ', label)

# 创建数据加载器
batch_size = 16
data_loader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True)

# 使用数据加载器迭代数据集
for batch_images, batch_labels in data_loader:
    print('批次图像大小: ', batch_images.size())
    print('批次标签大小: ', batch_labels.size())
    break

在上述代码中,首先需要指定包含图像数据集的文件夹路径data_folder。然后,定义图像数据集的转换函数transform,在这里我们使用ToTensor()函数将图像转换为torch.Tensor对象。接着,创建图像数据集对象dataset,并获取数据集的大小。可以通过len(dataset)来获取数据集的长度。

使用dataset[index]可以获取数据集中指定索引位置的图像样本。每个样本是一个由图像数据和标签组成的元组。在这里,我们获取数据集中的 个样本,并打印图像的大小和对应的标签。

接下来,我们创建了一个数据加载器data_loader,这个加载器会迭代地从数据集中获取batch_size个样本,并将其打乱顺序。我们使用torch.utils.data.DataLoader()函数来创建数据加载器,其中的参数包括数据集对象、批次大小和是否打乱数据的标志。

最后,我们使用数据加载器data_loader去迭代数据集,通过for循环依次获取每个batch的图像和标签。可以看到,每个batch的图像是一个大小为(batch_size, C, H, W)的张量,其中batch_size是批次大小,C是通道数,HW分别是图像的高度和宽度。每个batch的标签是一个大小为(batch_size,)的张量。

这就是使用DatasetFromFolder()函数生成PyTorch图像数据集的示例代码。你可以将自己的图像数据集放置在一个文件夹中,并按照相应的目录结构组织图像文件和对应的标签,然后使用上述代码加载数据集并进行训练、测试等任务。