__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등 표준화된 라이브러리 사용
하나의 반환 정의를 통해 여러 데이터를 묶어 배치작업을 해준다.
학습직전(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']}
Totensor()
와 같이 이미지 데이터를 텐서로 변환