[부스트캠프 AI Tech 5기] PyTorch Datasets and DataLoaders

박상우·2023년 3월 14일
0

부스트캠프

목록 보기
10/54
post-thumbnail

data를 모델에게 feeding 하는 것
모델에 데이터를 먹이는 방법

Dataset

Dataset 클래스

  • 데이터 입력 형태를 정의하는 클래스
  • 데이터를 입력하는 방식의 표준화
  • Image, Text, Audio에 따라 다름
class CustomDataset(Dataset):
	def __init__(self,text,labels):
    	# 초기 데이터 생성 방법
    	self.labels = labels
        self.data = text
        
    def __len__(self):
    	# 데이터의 전체 길이 
    	return len(self.labels)
   	def __getitem__(self,idx):
    	# index를 주었을 때 반환되는 데이터의 형태 
    	label = self.labels[idx]
        text = self.data[idx]
        sample = {"Text":text,"Class":label}
        return sample
  • init에서는 일반적으로 데이터의 위치, 파일명 등을 초기화
  • csv, xml 파일 등을 불러옴

생성 유의점

  • 데이터 형태에 따라 각 함수를 다르게 정의함
  • 모든 것을 데이터 생성 시점에 처리할 필요는 없음 (학습 때 변화해도 됨)
  • 데이터 셋에 대한 표준화된 처리 방법 제공 필요
  • 최근에는 HuggingFace등 표준화 된 라이브러리 사용

DataLoader

  • Data의 batch를 생성
  • 학습직전 데이터의 변환을 책임
  • Tensor로 변환 + Batch 처리
MyDataLoader = DataLoader(MyDataset,batch_size=2,shuffle=True) 
  • batch_size 만큼 뽑아줌

DataLoader Parameter

batch_size

  • 하나의 소그룹에 속하는 데이터의 수

shuffle

  • 데이터를 dataloader에서 섞어서 사용하겠는지를 설정 (boolean)

sampler / batch_sampler

  • index를 컨트롤 하는 방법으로, 설정하고 싶을 때 shuffle은 False여야 함
  • SequentialSampler : 항상 같은 순서
  • RandomSampler : 랜덤
  • SubsetRandomSampler : 랜덤 리스트
    등등

num_workers

  • 데이터를 불러올 때 사용하는 서브 프로세스의 개수
  • 무조건 num_workers를 높이면 병목 현상이 일어나 더욱 느려질 수도 있음

collate_fn

  • map-style 데이터셋에서 sample list를 batch 단위로 바꾸는데 필요한 기능
  • zero-padding 등 가변 데이터의 size를 맞추기 위해 자주 사용
  • collate는 함께 합치다 라는 의미

drop_last

  • 마지막 배치 사용 혹은 미사용
profile
세상아 덤벼라

0개의 댓글