본문 바로가기

STUDY/인공지능

torch.utils.data.DataLoader와 torch.utils.data.Dataset

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