[Pytorch] Dataset

hyunsooo·2022년 9월 27일
0

Dataset

  • __init__() : 데이터를 어떻게 불러올지 정의

  • __len__() : 데이터의 길이

  • __getiem__() : 데이터 하나에 대한 반환 정의

  • 데이터 입력 형태를 정의하는 클래스

  • 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):
    	label = self.labels[idx]
        text = self.data[idx]
        sample = {'Text': text, 'Class': label}
        
        return sample
  • 모든 것을 데이터 생성 시점에 처리할 필요는 없다. (image의 Tensor 변화는 학습에 필요한 시점에 변환)

  • 데이터 셋에 대한 표준화를 정의하는 것(후속 연구에 중요)

  • 최근에는 HuggingFace등 표준화된 라이브러리 사용

DataLoader

  • 하나의 반환 정의를 통해 여러 데이터를 묶어 배치작업을 해준다.

  • 학습직전(GPU feed전) 데이터의 변환을 책임

  • Tensor로 변환 + Batch 처리가 메인업무

  • 병렬적인 데이터 전처리 코드의 고민이 필요하다.


text = ['Happy', 'Amazing', 'Sad', 'Unhapy', 'Glum']
labels = ['Positive', 'Positive', 'Negative', 'Negative', 'Negative']
MyDataset = CustomDataset(text, labels)

MyDataLoader = DataLoader(MyDataset, batch_size=2, shuffle=True)
next(iter(MyDataLoader))
# {'Text': ['Glum', 'Sad'], 'Class': ['Negative', 'Negative']}

transforms

  • 데이터 전처리, Totensor()와 같이 이미지 데이터를 텐서로 변환
profile
지식 공유

0개의 댓글