Pytorch DataLoader를 통한 data loading
모두를 위한 딥러닝 - 파이토치 강의 참고
DataLoader를 통해 데이터를 batch_size 만큼 나누어 읽어오기 위해서는 torch.utils.data 의 Dataset을 상속받는 클래스를 정의해야 합니다.
자기만의 Dataset을 만든 뒤,
__len__
과__getitem__
메서드를 overriding해서 사용해야 합니다.
1 | def __len__(self): |
Dataset의 소스는 이곳에서 확인할 수 있으며, DataLoader에 대한 한글 설명은 이곳을 참고할 수 있습니다.
간단한 Linear regression 모델과 데이터를 만들어서 실습해 보았습니다.
먼저 Dataset을 상속받는 저만의 Dataset과
__len__
과__getitem__
메서드를 만들어 보겠습니다.
1 | class MyDataset(Dataset): |
- 이렇게 만들어진 MyDataset은
torch.utils.data
의DataLoader
를 통해 batch_size를 조절할 수 있습니다.
1 | dataset = MyDataset() |
- DataLoader를 통해 만들어진 객체는 iterable한 객체이기 때문에 다음과 같이 출력해서 확인해 볼 수도 있습니다.
1 | a = iter(dataloader) |
저만의 MyDataset에 입력한 데이터가 DataLoader를 통해 지정한 배치로 나눠져서 정상적으로 출력되는것을 확인할 수 있습니다.
이제 Linear regression 모델, optimizer를 다음과 같이 만든 뒤,
1 | class MultivariateLinearRegressionModel(nn.Module): |
- DataLoader를 통해 데이터를 불러와 학습해 보겠습니다.
1 | epochs = 20 |
- epochs 수만큼 학습을 하는 for문 안에 또 하나의 for문이 들어가 있는것을 확인할 수 있습니다. 안쪽 for문에서 batch_size만큼 나눠진 train 데이터를 model을 통해 학습하는 과정을 구현해 볼 수 있었습니다.