반응형

Dataset & DataLoader가 필요한 이유

- 더 나은 가독성과 모듈성을 위해 데이터를 처리하는 코드가 별도로 존재해야 함

- 데이터를 다운로드 받거나, 조작을 하거나, 배치를 만드는 등 데이터 조작에 다양한 기능이 필요

- 다양한 기능은 매번 개발하는 것은 번거롭기 때문에, PyTorch에서는 두 가지 기능을 제공함

- Data File (Excel, Image...) -> Tensor -> DataSet -> DataLoader 의 로드 과정을 거침

 

1) DataLoader

- 샘플에 쉽게 접근할 수 있도록 데이터 셋에 패키징

- Mini batch의 작업 등을 손쉽게 해줌

 

2) DatsSet

- 샘플과 해당 라벨을 저장

- TensorDataset이라는 클래스도 있음

 

 

 

Dataset Loading Example

from torchvision import datasets

training_data = datasets.FashionMNIST(
	root="data",	# train/test 데이터의 저장 장소
    train=True,		# train/test 데이터 여부
    download=True,	# 데이터가 없을 때, 인터넷에서 다운로드할지 여부
    transform=ToTensor()	# transformation 방법
)

 

 

 

DataLoader

- 데이터셋은 한 번에 하나의 샘플(feature and label)을 반환

- 모델을 훈련시킬 때, 일반적으로 "미니배치" 단위로 모델에 샘플을 전달

- 모델 과적합을 줄이기 위해 매 epoch마다 데이터를 reshuffle

- Python의 멀티프로세싱을 사용하여 데이터 검색 속도 향상

 

from torch.utils.data import DataLoader

train_dataloader = DataLoader(training_data, batch_size=64, shuffle=True)
test_dataloader = DataLoader(test_data, batch_size=64, shuffle=True)

 

반응형
복사했습니다!