[python] 파이썬 PyTorch에서 데이터셋을 준비하고 전처리하는 방법은?

PyTorch는 딥러닝의 인기 있는 프레임워크 중 하나로, 데이터셋을 준비하고 전처리하는 과정을 간단하게 수행할 수 있습니다. 이를 위해 torchvision 라이브러리를 사용할 수 있으며, 다음은 데이터셋을 준비하고 전처리하는 방법에 대한 예시입니다.

  1. torchvision 라이브러리 설치

    pip install torchvision
    
  2. 데이터셋 불러오기

    import torch
    import torchvision
    import torchvision.transforms as transforms
    
    # CIFAR10 데이터셋 불러오기
    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))  # 이미지 정규화
    ])
    
    trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                            download=True, transform=transform)
    trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                              shuffle=True, num_workers=2)
    

    transform을 사용하여 데이터셋에 전처리 단계를 추가할 수 있습니다. 위 예시에서는 이미지를 tensor로 변환하고, 정규화를 수행하는 과정을 추가했습니다.

  3. 데이터셋 사용하기

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 무작위로 일부 이미지 시각화하기
    def imshow(img):
        img = img / 2 + 0.5     # 이미지 언표준화 해제
        npimg = img.numpy()
        plt.imshow(np.transpose(npimg, (1, 2, 0)))
        plt.show()
    
    # 학습용 이미지 배치 가져오기
    dataiter = iter(trainloader)
    images, labels = dataiter.next()
    
    # 이미지 시각화하기
    imshow(torchvision.utils.make_grid(images))
    

    위 코드는 무작위로 가져온 이미지 배치를 시각화하는 예시입니다. 만약 CIFAR10 데이터셋을 사용하고 있다면, 해당 코드를 실행하면 학습용 이미지들이 시각화되어 출력됩니다.

PyTorch를 사용하여 데이터셋을 준비하고 전처리하는 방법은 다양한 변형을 통해 데이터를 조작할 수 있는 유연성을 제공합니다. 필요에 따라서 transforms.Compose를 사용하여 각각의 전처리 작업을 순서대로 연결하고, torchvision.transforms 모듈에서 제공하는 다양한 전처리 기능을 활용할 수 있습니다.

더 자세한 내용은 PyTorch 공식 문서와 torchvision 문서를 참고하시기 바랍니다.