首页 > 解决方案 > 从包含单独文件的文件夹创建自定义数据集

问题描述

我正在使用 Pytorch 的自定义数据集功能从一个文件夹中的单独文件创建自定义数据集。每个文件包含 123 行和 123 列,所有数据点都是整数。

我的问题是我遇到的资源可以满足一个 .csv 中的文件,而我的不是。更重要的是,在转换为图像后打开图像也不会运行。我不确定如何从这里开始,因为我的代码给出了:

AttributeError: 'Image' object has no attribute 'read'
import os
from torch.utils.data import DataLoader, Dataset
from numpy import genfromtxt

# Custom dataset
class CONCEPTDataset(Dataset):
    """ Concept Dataset """

    def __init__(self, file_dir, transforms=None):
        """
        Args:
            file_dir (string): Directory with all the images.
            transforms (optional): Changes on the data.
        """
        self.file_dir = file_dir
        self.transforms = transforms

        self.concepts = os.listdir(file_dir)
        self.concepts.sort()
        self.concepts = [os.path.join(file_dir, concept) for concept in self.concepts]
    
    def __len__(self):
        return len(self.concepts)

    def __getitem__(self, idx):
        image = self.concepts[idx]

        # csv file to a numpy array using genfromtxt
        data = genfromtxt(image, delimiter=',')

        data = self.transforms(data.unsqueeze(0))
        return data

标签: pythonpytorchdataset

解决方案


PIL.Image.fromarray用于将数组转换为 PIL 图像,同时Image.open用于从文件系统加载图像文件。您不需要这两个中的任何一个,因为您已经有一个代表您的图像的 NumPy 数组并希望返回它。torch.Tensor如果您将数据集插入到torch.data.utils.DataLoader.


推荐阅读