반응형
✅ 1. Dataset
Dataset은 데이터셋 전체에 대한 정의입니다.
데이터의 구조, 길이, 하나씩 접근하는 방법을 정의하는 클래스예요.
🔧 주요 기능
- __len__: 전체 데이터 샘플 개수 반환
- __getitem__: 인덱스를 이용해 하나의 샘플 반환
📌 활용도
- 커스텀 데이터셋을 정의할 때 사용
- 이미지, 텍스트 등 어떤 데이터든 구조만 정해주면 됨
- 전처리(transform)도 Dataset 클래스 내부에서 처리 가능
🧸 예시
from torch.utils.data import Dataset
class MyDataset(Dataset):
def __init__(self, data, labels):
self.data = data
self.labels = labels
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx], self.labels[idx]
✅ 2. DataLoader
DataLoader는 Dataset으로부터 배치 단위로 데이터를 뽑아주는 역할을 해요.
학습 시에 데이터를 하나씩 불러오는 게 아니라, 미니배치로 묶어서 사용하죠.
🔧 주요 기능
- batch_size: 한 번에 가져올 데이터 수
- shuffle: 데이터 셔플링 여부
- num_workers: 데이터 로딩을 위한 subprocess 수
- drop_last: 마지막 배치를 버릴지 여부
📌 활용도
- 모델 학습 시, 성능과 속도 향상
- 병렬 데이터 로딩 가능
- 배치 학습, 셔플, 순차 처리 등 편리하게 처리
🧸 예시
from torch.utils.data import DataLoader
# 위에서 만든 Dataset 사용
dataset = MyDataset(data=[[1, 2], [3, 4], [5, 6]], labels=[0, 1, 0])
# DataLoader로 배치화
dataloader = DataLoader(dataset, batch_size=2, shuffle=True)
for batch in dataloader:
print(batch)
🚀 요약
항목DatasetDataLoader
역할 | 데이터 구조 정의, 하나씩 접근 | 배치 단위로 데이터 제공, 학습 최적화 |
필요 함수 | __len__, __getitem__ | 없음 (Dataset을 인자로 받음) |
핵심 기능 | 커스텀 데이터셋 구성 | 배치 처리, 셔플링, 병렬 로딩 등 |
예시 사용처 | 이미지 분류 데이터셋 정의 | 학습 루프에서 배치 처리 |
반응형
'컴퓨터 과학 > 인공지능' 카테고리의 다른 글
Input Layer, Hidden Layer, Output Layer란? (0) | 2025.04.27 |
---|---|
Fully Connected Layer란? (0) | 2025.04.27 |
시그모이드함수(Sigmoid Function)을 파헤쳐 보자 (0) | 2025.04.10 |
딥러닝 기본 파이프라인 예제 (pytorch) (1) | 2025.04.10 |
PyTorch DataLoader: 실무에 가까운 고급 사용법과 예제 (0) | 2025.04.08 |