Dataset & DataLoader

꼼댕이·2022년 10월 1일
0

pytorch

목록 보기
3/7

Datasets & DataLoader

기본 구조

모델에 데이터를 먹이는 방법

ToTensor()는 데이터를 변형/전처리할 때(transform 단계)에서 수행하도록 하자! (Dataset의 init 단계에서 X)

Dataset을 하나하나 어떻게 처리할 지 정의했으면 DataLoader는 이것들을 묶어서 Model에 feeding 역할

Dataset Class

from torch.utils.data import datasets

  • 데이터의 입력 형태를 정의하는 클래스
  • 데이터를 입력하는 방식의 표준화
  • Image, Text, Audio 등에 따른 다른 입력을 정의

필수

  • __init__()
  • __len__()
  • __getitem__()

-> __getitem__() 은 data loader에서 호출하는 함수

생성시 유의점

  • 데이터의 형태에 따라 각 함수를 다르게 정의해줘야 한다
  • 모든 것을 데이터의 생성 시점에 처리할 필요가 없다
    (image의 Tensor 벼놯는 학습에 필요한 시점에 변환!)
  • dataset에 대한 표준화된 처리방법 제공 -> dataset을 사용하는 사람들을 위한 배려
  • 최근에는 HugingFace와 같은 표준화된 라이브러리 사용


DataLoader Class

form torch.utils.data import DataLoader

  • Data의 Batch를 생성해주는 class
  • Dataset은 하나의 data를 어떻게 가져올 것인가? 라면
    DataLoader는 그 인덱스를 가지고 여러개를 한번에 묶어서 모델에 던져주는 역할
  • 학습직전 (GPU feed전) 데이터의 변환을 책임
  • Tensor로 변환 + Batch처리
MyDataset = CUstomDataset(text, labels)
MyDataloader = DataLoader(MyDataset, batch_size=2, shuffle=True)

for dataset in MyDataloader:
	print(dataset)

필수 parameter

  • batch_size = 데이터를 몇 개씩 뽑을 것인가?
  • sample = 데이터의 인덱스를 어떻게 뽑아줄지 정해주는 기법
  • batch_sample = 배치의 인덱스
  • collate_fn = 데이터가 올바르게 처리되지 않고 차원이 안맞은 채로 들어가는 경우가 있는데 이때 차원의 형태를 맞춰주는 역할을 함 (padding)
    (보통 variable length(가변인자)를 처리할 떄 많이 사용함)
  • drop_last = 마지막 batch를 삭제
    ex) batch_size가 4인데 총 데이터의 길이가 10이면 DataLoader는 알아서 {4,4,2}를 가져오는데 이때 마지막의 batch_size의 개수가 다른 것을 알아서 삭제시켜줄지 안해줄지...

참고

모든 이미지는 부스트캠프 AI Tech교육 자료를 참고

profile
사람을 연구하는 공돌이

0개의 댓글