본문 바로가기
🤖 AI/AI

🦿딥러닝 실전 : Data Loader

by 정람지 2024. 10. 17.
 

 


[파이토치] 실전 인공지능으로 이어지는 딥러닝/ 딥러닝호형


🦿Data Loader

import torch # 파이토치 기본 라이브러리
import torchvision # 이미지 관련 된 파이토치 라이브러리
import torchvision.transforms as tr # 이미지 전처리 기능들을 제공하는 라이브러리
from torch.utils.data import DataLoader, Dataset # 데이터를 모델에 사용할 수 있도록 정리해 주는 라이브러리
import numpy as np # 넘파이 기본 라이브러리
from torch.utils.data import Dataset

class MyDataset(Dataset):

    def __init__(self):

    def __getitem__(self, index):

    def __len__(self):

정형화 되지 않은 커스텀 데이터 정리하기

class TensorData(Dataset):

    def __init__(self, x_data, y_data):
        self.x_data = torch.FloatTensor(x_data) # 이미지 데이터를 FloatTensor로 변형
        self.x_data = self.x_data.permute(0,3,1,2) # (이미지 수)x(높이)x(너비)x(채널 수) -> (배치 크기)x(채널 수)x(높이)x(너비)
        self.y_data = torch.LongTensor(y_data) # 라벨 데이터를 LongTensor로 변형
        self.len = self.y_data.shape[0]

    def __getitem__(self, index):
        return self.x_data[index], self.y_data[index] # 뽑아 낼 데이터를 적어준다.

    def __len__(self):
        return self.len

# 파이토치에서는 (배치 크기)x(채널 수)x(너비)x(높이) 데이터가 사용 되므로 원래 데이터 (이미지 수)x(높이)x(너비)x(채널 수)를 변경해야만 한다.
# permute에서 0(이미지 수), 1(높이), 2(너비), 3(채널 수)을 0(이미지 수), 3(채널 수), 1(높이),2 (너비)로 바꿔주는 것이기 때문에
# .permute(0,3,1,2)을 사용하는 것이다.

train_data = TensorData(train_images,train_labels) # 텐서 데이터 불러오기
train_loader = DataLoader(train_data, batch_size=10, shuffle=True) # 미니 배치 형태로 데이터 갖추기

dataiter = iter(train_loader)
images, labels = next(dataiter)

print(images.size(), labels.size())

텐서 데이터 로드

미니 배치 형태로 바꾸기

테스트 뽑아보기