[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를 사용하여 훈련 데이터와 검증 데이터를 분리할 수 있습니다.

참고 문서: