STUDY/인공지능
torch.utils.data.DataLoader와 torch.utils.data.Dataset
채소보끔
2023. 4. 23. 16:09
728x90
https://tutorials.pytorch.kr/beginner/basics/data_tutorial.html
Dataset과 DataLoader
파이토치(PyTorch) 기본 익히기|| 빠른 시작|| 텐서(Tensor)|| Dataset과 DataLoader|| 변형(Transform)|| 신경망 모델 구성하기|| Autograd|| 최적화(Optimization)|| 모델 저장하고 불러오기 데이터 샘플을 처리하는 코
tutorials.pytorch.kr
위 문서를 정리 한 것임.
이론만 적은 글이므로 생략된 코드가 많음.
관련 코드는 위 링크를 살펴 볼 것.
[torch.utils.data.DataLoader와 torch.utils.data.Dataset]
- 미리 준비한 데이터 셋, 가지고 있는 데이터 사용을 가능하게 해줌
- Dataset : 샘플과 정답(label)을 저장
- DataLoader : Dataset을 샘플에 쉽게 접근가능하게 iterable로 감싼다.
[torch.utils.data.Dataset]
- Dataset 클래스는 반드시 3개의 함수로 구현해야 함.
- __init__, __len__, __getitem__
1) __init__ : Dataset 객체가 생성될 때 한번만 실행됨
2) __len__ : 데이터셋의 샘플 개수 반환
3) __getitemm__ : 주어진 idx에 해당하는 샘플을 데이터 셋에서 불러오고 반환함.
from torchvision.io import read_image라이브러리의 read_image를 사용해 이미지를 텐서로 변환함
def __getitem__(self, idx):
img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0])
image = read_image(img_path)
label = self.img_labels.iloc[idx, 1]
if self.transform:
image = self.transform(image)
if self.target_transform:
label = self.target_transform(label)
sample = {"image": image, "label": label}
return sample
[torch.utils.data.DataLoader]
- 데이터 셋을 불러온 뒤에 데이터셋을 순회
- batch size의 특징과 정답을 포함하는 train features와 train labels의 묶음을 반환함
- shuffle =True로 지정하면 모든 배치를 순회한 뒤 데이터가 섞임
728x90