[python] 파이썬 PyTorch에서 훈련 및 검증 데이터를 분리하는 방법은?
먼저, 데이터셋을 로드한 후에 다음과 같이 데이터를 분리할 수 있습니다.
import torch
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import train_test_split
# 데이터셋 클래스 정의
class MyDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
# 전체 데이터 로드
data = [...] # 데이터 로드하는 코드
# 데이터셋 인스턴스 생성
dataset = MyDataset(data)
# 훈련 데이터와 검증 데이터로 분리
train_data, val_data = train_test_split(dataset, test_size=0.2, random_state=42)
# 데이터 로더 생성
train_loader = DataLoader(train_data, batch_size=32, shuffle=True)
val_loader = DataLoader(val_data, batch_size=32)
# 훈련 및 검증 데이터 사용 예시
for inputs, targets in train_loader:
# 훈련 데이터 사용
...
for inputs, targets in val_loader:
# 검증 데이터 사용
...
위 코드에서 train_test_split
함수는 sklearn.model_selection
모듈에서 가져온 함수로서, 데이터를 훈련 데이터와 검증 데이터로 나누는 역할을 합니다. test_size
매개변수로 검증 데이터의 비율을 설정할 수 있고, random_state
매개변수로 데이터를 섞을 때 사용하는 시드값을 설정할 수 있습니다. 데이터를 분리한 후에는 훈련 데이터와 검증 데이터를 각각 데이터 로더로 변환하여 사용할 수 있습니다.
이와 같이 PyTorch를 사용하여 훈련 데이터와 검증 데이터를 분리할 수 있습니다.
참고 문서:
- PyTorch 데이터셋 및 데이터로더: https://pytorch.org/tutorials/beginner/data_loading_tutorial.html
- Scikit-learn
train_test_split
함수: https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html