Spicy Tuna Sushi
본문 바로가기
부스트캠프 AI Tech

Custom Dataset 및 Custom DataLoader 생성 과제 정리

by 말린malin 2022. 10. 2.

<PyTorch의 Dataset>

  • Dataset 관련 모듈

- torch.utils.data: 데이터셋의 표준을 정의하고 데이터셋을 불러오고 자르고 섞는데 쓰는 도구들이 들어있는 모듈
- torchvision.dataset: torch.utils.data.Dataset을 상속하는 이미지 데이터셋의 모음
- torchtext.dataset: torch.utils.data.Dataset을 상속하는 텍스트 데이터셋의 모음
- torchvision.transforms: 이미지 데이터셋에 쓸 수 있는 여러 가지 변환 필터를 담고 있는 모듈
- torchvision.utils: 이미지 데이터를 저장하고 시각화하기 위한 도구가 들어있는 모듈

 

  • Dataset의 기본 구성 요소
from torch.utils.data import Dataset

class CustomDataset(Dataset):
    def __init__(self,):
        pass

    def __len__(self):
        pass

    def __getitem__(self, idx):
        pass

 


<PyTorch의 DataLoader>

  • DataLoader의 기본 구성 요소
DataLoader(dataset,            # Dataset 인스턴스가 들어감
           batch_size=1,       # 배치 사이즈를 설정
           shuffle=False,      # 데이터를 섞어서 사용하겠는지를 설정
           sampler=None,       # sampler는 index를 컨트롤
           batch_sampler=None, # 위와 비슷하므로 생략
           num_workers=0,      # 데이터를 불러올때 사용하는 서브 프로세스 개수
           collate_fn=None,    # map-style 데이터셋에서 sample list를 batch 단위로 바꾸기 위해 필요한 기능
           pin_memory=False,   # Tensor를 CUDA 고정 메모리에 할당
           drop_last=False,    # 마지막 batch를 사용 여부
           timeout=0,          # data를 불러오는데 제한시간
           worker_init_fn=None # 어떤 worker를 불러올 것인가를 리스트로 전달
          )

dataloader_custom = DataLoader(dataset_custom)

- collate_fn : 보통 map-style 데이터셋에서 sample list를 batch 단위로 바꾸기 위해 필요한 기능, 데이터 사이즈를 맞추기 위해 많이 사용함

 

- 활용 과제 : 하나의 batch에는 동일한 길이를 반환할 수 있도록/ 하나의 batch에서 가장 길이가 긴 sample 기준으로 길이를 맞추기 /길이를 맞출 때는 비어있는 오른쪽을 0으로 패딩 ex) 1 1 1 -> 1 1 1 0 0 0

 

  • torchvision에서 제공하는 transform 함수

- transforms.Resize
- transforms.RandomCrop
- transforms.RandomRotation

- transforms.ToTensor

 

<PyTorch의 Custom Dataset 과 DataLoader>

  • Titanic
  • MNIST
  • AG_NEWS

 

'부스트캠프 AI Tech' 카테고리의 다른 글

Word Embedding: Word2Vec, GloVe  (0) 2022.10.11
22-10-11 깃헙특강  (0) 2022.10.11
Bag-of-Words, NaiveBayes Classifier  (0) 2022.10.11
Transformer  (0) 2022.10.09
Custom Model 제작 과제 정리  (0) 2022.10.01

댓글