Programming
[pytorch] Dataset & Dataloader
da-da-da
2022. 12. 3. 21:12
728x90
반응형
Dataset 클래스
하나의 데이터를 어떻게 가져올 것인가?
- 데이터 입력 형태를 정의하는 클래스
- 데이터를 입력하는 방식을 표준화
- 이미지, 텍스트, 오디오 등 데이터 포맷에 따라 다른 입력을 정의해야 한다.
import torch
from torch.utils.data import Dataset, DataLoader
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
Dataset 클래스 생성 유의사항
- 데이터 형태에 따라 함수를 다르게 정의
- 모든 것을 데이터의 생성 시점에 처리할 필요는 없음. 예를 들어 이미지의 Tensor변화는 학습 중 필요한 시점에 수행하면 됨
- 최근에는 HuggingFace등 표준화된 라이브러리를 사용함
DataLoader 클래스
여러개 데이터를 한 번에 어떻게 묶을 것인가?
- 데이터의 Batch를 생성해 주는 클래스
- 학습 직전 데이터의 변환을 담당
- Tensor로 변환 + Batch처리를 메인으로 함
- 병렬적인 데이터 전처리 코드의 고민이 필요한다.
text = ["Happy", "Amazing", "Sad", "Unhappy", "Glum"]
labels = ["Positive", "Positive", "Negative", "Negative", "Negative"]
MyDataset = CustomDataset(text, labels)
728x90
반응형