如何创建torch.utils.data.Dataset并将其导入到torch.uutils.data.data Loa



我想用torch.utils.data.Dataset从CSV文件导入数据,这样我就可以使用torch.utils.data.DataLoader来处理它。数据不属于torchvision,它来自我的电脑。谷歌上似乎没有解决方案。如果你能给我一些建议,我将非常感谢。

如果你已经有csv文件,你可以用panda很容易地做到这一点。

import pandas as pd
my_dataframe = pd.read_csv("path/to/file.csv")

有了这个,您现在可以访问csv文件中的数据。如果您想使用pytorchtorch.utils.data.DataLoader,您还需要一个torch.utils.data.Dataset

根据您使用的数据类型,数据集的外观可能会大不相同。如果您正在处理csv中的图像路径和标签,请查看我曾经用于torchvision.models.resnet50():的数据集

from torch.utils.data import Dataset
from PIL import Image
from torchvision import models, transforms
import cv2
class createDataset(Dataset):
def __init__(self, dataframe):
self.dataframe = dataframe
self.transform = transforms.Compose([transforms.ToTensor()])
def __len__(self):
return self.dataframe.shape[0]

def __getitem__(self, index):
image = self.dataframe.iloc[index]["Name_of_imagepath_column"]
image = cv2.imread(image)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = Image.fromarray(image)    
image = self.transform(image)
label = self.dataframe.iloc[index]["Name_of_label_column"]
return {"image": image , "targets": torch.tensor(label, dtype=torch.long)}

标签/目标是可选的,仅在我的项目中是必要的。

现在您可以将pandas数据帧传递给Dataset类,如下所示:

my_dataset = createDataset(dataframe = my_dataframe)

现在可以将此数据集传递给torch.utils.data.DataLoader并创建Dataloader:

from torch.utils.data import DataLoader
my_dataloader= DataLoader(dataset=my_dataset)

有关Dataloader的更多选项,如batchsize和shuffle,请查阅Pytorch Dataloader文档

最新更新