Reference
import torch
from torch.utils.data import Dataset
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 값을 주었을 때 반환되는 데이터 형태 (X,y)
label = self.labels[idx]
text = self.data[idx]
sample = {'text' : text, 'class' : label}
return sample
text = ['Happy', 'Amazing', 'Sad', 'Unhapy', 'Glum']
labels = ['Positive', 'Positive', 'Negative', 'Negative', 'Negative']
MyDataset = CustomDataset(text, labels)
MyDataLoader = DataLoader(MyDataset, batch_size=3, shuffle=True)
for dataset in MyDataLoader:
print(dataset)
####
{'Text': ['Amazing', 'Unhapy', 'Sad'], 'Class': ['Positive', 'Negative', 'Negative']}
{'Text': ['Happy', 'Glum'], 'Class': ['Positive', 'Negative']}
위의 결과값과 같이 batch size로 데이터 크기가 꼭 나눠지지 떨어지지 않아도 마지막에 남은 데이터가 출력된다.
☝ next(iter(MyDataLoader)) : MyDataLoader는 iterable한 객체이기 때문에 iter를 붙여주면 generator로 생성되고 next를 하면 다음 데이터를 추출 (원래 input된 상태로 있다가 호출하는 시점에 메모리에 올라가서 변환된 tensor로 출력됨)DataLoader(dataset, batch_size=1, shuffle=False, **sampler**=None, **batch_sampler**=None, num_workers=0, **collate_fn**=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, *, prefetch_factor=2, persistent_workers=False)
torchvision.datasets에서 많은 데이터셋이 제공된다. 여기서 다운받아서 구현해봐라 →🎇 torchvision.datasets.MNIST 클론 코딩 !!!