더북(TheBook)

커스텀 데이터셋을 만들어서 사용

딥러닝은 기본적으로 대량의 데이터를 이용하여 모델을 학습시킵니다. 하지만 데이터를 한 번에 메모리에 불러와서 훈련시키면 시간과 비용 측면에서 효율적이지 않습니다. 따라서 데이터를 한 번에 다 부르지 않고 조금씩 나누어 불러서 사용하는 방식이 커스텀 데이터셋(custom dataset)입니다.

먼저 CustomDataset 클래스를 구현하기 위해서는 다음 형태를 취해야 합니다.

class CustomDataset(torch.utils.data.Dataset):
    def __init __(self): ------ 필요한 변수를 선언하고, 데이터셋의 전처리를 해 주는 함수
    def __len __(self): ------ 데이터셋의 길이. 즉, 총 샘플의 수를 가져오는 함수
    def __getitem __(self, index): ------ 데이터셋에서 특정 데이터를 가져오는 함수(index번째 데이터를 반환하는 함수이며, 이때 반환되는 값은 텐서의 형태를 취해야 합니다)

커스텀 데이터셋 구현 방법에 대해 예제를 통해 구체적으로 알아보겠습니다.

import pandas as pd
import torch
from torch.utils.data import Dataset
from torch.utils.data import DataLoader

class CustomDataset(Dataset):
    def __init__(self, csv_file): ------ csv_file 파라미터를 통해 데이터셋을 불러옵니다.
        self.label = pd.read_csv(csv_file)

    def __len__(self): ------ 전체 데이터셋의 크기(size)를 반환합니다.
        return len(self.label)

    def __getitem__(self, idx): ------ 전체 x와 y 데이터 중에 해당 idx번째의 데이터를 가져옵니다.
        sample = torch.tensor(self.label.iloc[idx,0:3]).int()
        label = torch.tensor(self.label.iloc[idx,3]).int()
        return sample, label

tensor_dataset = CustomDataset('../covtype.csv') ------ 데이터셋으로 covtype.csv를 사용합니다.
dataset = DataLoader(tensor_dataset, batch_size=4, shuffle=True) ------  데이터셋을 torch.utils.data.DataLoader에 파라미터로 전달합니다.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.