파이토치의 전처리 파이프라인 구축 클래스, Dataset 과 DataLoader 의 구축
텐서에서 파이토치 DataLoader 만들기
import torch
from torch.utils.data import DataLoader
t = torch.arange(6, dtype=torch.float32)
data_loader = DataLoader(t)
for item in data_loader:
print(item)
>>>
tensor([0.])
tensor([1.])
tensor([2.])
tensor([3.])
tensor([4.])
tensor([5.])
데이터셋의 개별 원소 순환
배치 크기 3의 배치를 만들려면 batch_size 매개변수를 사용한다.
data_loader = DataLoader(t, batch_size=3, drop_last=False)
for i, batch in enumerate(data_loader, 1):
print(f'배치 {i}:', batch)
>>>
배치 1: tensor([0., 1., 2.])
배치 2: tensor([3., 4., 5.])
이 데이터셋에서 두 개의 배치 생성,
마지막 배치 삭제
DataLoader 를 사용하여 데이터셋을 자동 배치 또는 사용자 정의 배치로 구성할 수 있다.
두 개의 텐서를 하나의 데이터셋으로 연결
import torch
from torch.utils.data import DataLoader
from torch.utils.data import Dataset
torch.manual_seed(1)
t_x = torch.rand([4, 3], dtype=torch.float32)
t_y = torch.arange(4)
class JointDataset(Dataset):
def __init__(self, x, y):
self.x = x
self.y = y
def __len__(self):
return len(self.x)
def __getitem__(self, idx):
return self.x[idx], self.y[idx]
joint_dataset = JointDataset(t_x, t_y)
for example in joint_dataset:
print('x : ', example[0], 'y : ', example[1])
사용자 정의 Dataset 클래스는 데이터 로더가 사용할 두 개의 메서드를 포함해야 한다.
- __init__() : 기존 배열 읽기, 파일 로드, 데이터 필터링 등 초기화 로직
- __getitem__() : 주어진 인덱스에 해당하는 샘플의 반환
사용자 정의 데이터셋 클래스를 사용하여 t_x, t_y 의 조인트 데이터셋을 만든다.
getitem 메서드는 주어진 잉ㄴ덱스에 해당하는 self.x, self.y 의 데이터를 반환하는데 이 두 값을 튜플로 반환하게 된다.
때문에 example 튜플로 반환된 두 값을 인덱스 번호를 통해 접근하게 되는 것
텐서 형식의 데이터셋인 경우 간단하게 TensorDataset 을 활용하아ㅕ 조인트 데이터셋을 생성할 수 있다.
'pytorch' 카테고리의 다른 글
로컬 파일에서 데이터셋 만들기 (0) | 2024.09.30 |
---|---|
셔플, 배치, 반복 (0) | 2024.09.30 |
파이토치 텐서 생성 (2) | 2024.09.30 |
파이토치를 사용한 신경망 훈련(2) - 파이토치로 신경망 모델 만들기 (0) | 2024.07.21 |
파이토치를 사용한 신경망 훈련 (2) | 2024.07.14 |