반응형

 

 

Transforms — PyTorch Tutorials 1.13.1+cu117 documentation

Note Click here to download the full example code Learn the Basics || Quickstart || Tensors || Datasets & DataLoaders || Transforms || Build Model || Autograd || Optimization || Save & Load Model Transforms Data does not always come in its final processed

pytorch.org

 

목차

  • 변환
  • ToTensor()
  • 람다 변환

 

변환 (Transforms)

  • 데이터가 항상 기계 학습 알고리즘 훈련에 필요한 형식으로 제공되지는 않음
  • 변환을 사용하여 데이터를 조작하고 훈련에 적합하게 만들어야 함
  • TorchVision 데이터셋에는 피쳐와 라벨을 모두 변환하기 위한 매개변수 존재 (transform: 피쳐 변환 / target_transform: 레이블 수정)
  • torchvision.transforms 모듈은 일반적으로 사용되는 변환을 제공

 

  • FashionMNIST 의 피쳐는 PIL 이미지 형식, 레이블은 정수형
  • 학습을 위해 정규화된 텐서인 피쳐와 one-hot 인코딩된 레이블 필요
  • 이러한 변환 수행 위해 ToTensor 및 Lambda 사용
import torch
from torchvision import datasets
from torchvision.transforms import ToTensor, Lambda

ds = datasets.FashionMNIST(
    root="data",
    train=True,
    download=True,
    transform=ToTensor(),
    target_transform=Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(0, torch.tensor(y), value=1))
)

 

ToTensor()

  • ToTensor는 PIL 이미지 또는 NumPy ndarray를 FloatTensor로 변환하고 [0., 1.] 범위에서 이미지 픽셀의 강도 값을 조정

 

람다 변환 (Lambda transforms)

  • 람다 변환은 모든 사용자 정의 Lambda 함수를 적용함
  • 여기에서는 정수를 one-hot 인코딩된 텐서로 변환하는 함수를 정의

 

  • 크기 10(데이터셋의 레이블 수)의 0 텐서 생성 후 레이블 y가 제공하는 인덱스에 value=1을 할당하는 scatter 함수 호출
  • 다른 옵션으로 torch.nn.functional.one_hot 이용 가능
target_transform = Lambda(lambda y: torch.zeros(
    10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1))
반응형

+ Recent posts