[딥러닝] Dataset vs. Dataloader

폼폼(YUNA AN)·2024년 10월 2일

Chat GPT로 공부하기

목록 보기
11/14
post-thumbnail

질문

Pytorch에서 Dataset과 Dataloader의 차이가 뭘까?

답변

1. Dataset:

  • Dataset은 데이터 샘플과 그에 상응하는 라벨을 포함하는 클래스입니다.
  • 데이터의 구조를 정의하며, 데이터를 어떻게 불러올지 설정하는 역할을 합니다.
  • Dataset을 상속받아 __getitem____len__ 메서드를 구현하면, 원하는 방식으로 데이터를 로드할 수 있습니다.
    예를 들어, CSV 파일을 읽거나 이미지 폴더에서 이미지를 불러와 사용할 수 있게 합니다.
from torch.utils.data import Dataset

class CustomDataset(Dataset):
    def __init__(self, data):
        self.data = data

    def __getitem__(self, index):
        return self.data[index]

    def __len__(self):
        return len(self.data)     

2. DataLoader:

  • DataLoaderDataset에서 정의한 데이터를 효율적으로 로드하기 위한 클래스입니다.
  • 주된 기능은 배치(batch) 단위로 데이터를 불러오고, 데이터를 섞거나(shuffle), 병렬로 처리하는 등의 작업을 돕습니다.
  • 데이터가 너무 클 경우 한 번에 불러오는 대신 여러 미니배치로 나눠 처리할 수 있게 합니다.
  • DataLoader는 내부적으로 Dataset 객체를 받아서 데이터를 로드합니다.
from torch.utils.data import DataLoader

dataset = CustomDataset([1, 2, 3, 4, 5])
dataloader = DataLoader(dataset, batch_size=2, shuffle=True)

for data in dataloader:
    print(data)

요약:

  • Dataset: 데이터를 정의하고, 어떻게 로드할지 결정하는 클래스.
  • DataLoader: Dataset에서 정의한 데이터를 배치 처리하거나 병렬로 처리할 수 있게 도와주는 클래스.
profile
광고 도메인과 콘텐츠 기획의 전문성을 갖춘 데이터 분석가입니다.

0개의 댓글