[python] 파이썬 PyTorch에서 훈련, 검증, 테스트 데이터를 분할하는 방법은?

데이터 불러오기

우선, 훈련, 검증, 테스트 데이터를 분할하기 전에 데이터를 불러와야 합니다. PyTorch의 torchvision 패키지는 많은 유명한 데이터셋을 제공하므로 이를 사용해볼 것입니다. 예를 들어, CIFAR-10 데이터셋을 사용해보겠습니다.

import torchvision
import torchvision.transforms as transforms

# 데이터셋 불러오기
trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transforms.ToTensor())

# 데이터 로더 만들기
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)

데이터 분할하기

데이터를 훈련, 검증, 테스트셋으로 분할하기 위해 먼저 전체 데이터셋의 크기를 알아야 합니다. 그런 다음 torch.utils.data.random_split 함수를 사용하여 데이터셋을 분할할 수 있습니다.

# 데이터셋 크기 확인
dataset_size = len(trainset)

# 훈련, 검증, 테스트셋 비율 설정
train_ratio = 0.8
val_ratio = 0.1
test_ratio = 0.1

# 데이터셋 분할
train_size = int(train_ratio * dataset_size)
val_size = int(val_ratio * dataset_size)
test_size = dataset_size - train_size - val_size

trainset, valset, testset = torch.utils.data.random_split(trainset, [train_size, val_size, test_size])

이렇게 데이터셋을 분할하면 trainset, valset, testset으로 각각 훈련, 검증, 테스트 데이터셋이 생성됩니다.

데이터 로더 만들기

마지막으로, 각 데이터셋에 대한 데이터 로더를 만들어줍니다.

# 데이터 로더 만들기
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)
valloader = torch.utils.data.DataLoader(valset, batch_size=64)
testloader = torch.utils.data.DataLoader(testset, batch_size=64)

이제 각각의 데이터셋에 대한 데이터 로더가 생성되었습니다. 훈련 데이터셋은 trainloader, 검증 데이터셋은 valloader, 테스트 데이터셋은 testloader로 사용할 수 있습니다.

이렇게 PyTorch의 torchvision 패키지를 사용하여 훈련, 검증, 테스트 데이터를 간단히 분할할 수 있습니다. 이러한 데이터 분할은 모델을 훈련하고 평가하는 과정에서 유용하게 활용될 수 있습니다.

참고: PyTorch 공식 문서