반응형
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)
반응형
'AI > Deep Learning' 카테고리의 다른 글
| [딥러닝] CNN (Convolutional Neural Network) (0) | 2024.12.11 |
|---|---|
| [딥러닝] 과대적합 (Overfitting) (0) | 2024.12.10 |
| [딥러닝] 경사 하강법 (Gradient Descent) (0) | 2024.12.10 |
| [딥러닝] 인공 신경망의 기본 원리 (0) | 2024.12.09 |
| [딥러닝] Neural Network Model의 설계 (0) | 2024.12.08 |