Datasets & Dataloaders

Taehong Jang·2022년 3월 24일
0

본 내용 - https://pytorch.org/tutorials/beginner/basics/data_tutorial.html

도입

pytorch에서 데이터를 관리하는 방법 중 하나인 dataset과 dataloader에 대해 파악

해당 패키지는 다음과 같다

torch.utils.data.DataLoader
torch.utils.data.Dataset

Dataset

  • DataLoader를 사용하기 위해 가장 중요한 인자
    (DataLoader에 Data그대로가 아닌 Dataset으로 바꾸는 작업을 한 후에 전달)

  • 2개의 type이 존재

  1. map-style datasets
    __getitem____len__을 사용하는게 규칙, 인덱스와 키값들을 통해 데이터 샘플들에 접근

  2. iterable-style datasets
    __iter__() 을 사용하는게 규칙, 데이터 샘플들에 대한 순환되는 형태로 표현. 데이터를 랜덤하게 읽어오는게 비효율적이거나 난해할 때나 fetched data를 따라가는 batch size를 가질 때 쓰이기 좋다. 데이터를 스트림 형태로 읽어오거나, 실시간으로 생성되는 경우에 적절함.

TensorDataset을 포함한 여러 완제품도 있고, class로 만들어 상속받아 커스터마이징 할 수도 있음

Dataset의 경우 데이터의 샘플(=x값=변인값)과 그것과 짝을 이루는 레이블값(=y값=결과값)을 저장해준다.

원래 data \rightarrow Dataset으로 변환 후에 첫행만 출력 해보았다.

(tensor([-0.3144,  0.4515, ..., -0.0228, -0.0166]),
 tensor(6.))

샘플값과 레이블 값을 분리해서 보관하고 있는 것을 알 수 있다.

DataLoader

DataLoader의 경우 dataset으로 저장된 것을 iterable하게 포장해서 샘플값들에 쉽게 접근하게 돕는다.
(쉽게 말하면 for구문 반복할 때마다 정해진 값들에 맞게 샘플값을 넣어주는 것이다.)
ex) batch_size는 몇으로 할지, shuffle 여부라든지

0개의 댓글