https://tutorials.pytorch.kr/beginner/basics/transforms_tutorial.html
변형(TRANSFORM)
- 데이터가 항상 머신러닝 알고리즘 학습에 필요한 최종 처리가 된 상태로 제공되지는 않음
- 변형을 통해 데이터를 조작하고 학습에 적합하게 만듦
- 모든 Torchvision 데이터셋들은 변형 로직을 갖는, 호출 가능한 객체(callable)를 받는 매개 변수 두 개를 가짐
- transform : 특징(feature)을 변경하기 위함
- target_transform : 정답(label)을 변경하기 위함
- torchvision.transforms 모듈은 주로 사용하는 몇가지 변형을 제공
- FashionMNIST
- 특징(feature) : PIL image 형식
- 정답(label) : 정수(integer)
- 학습을 하려면 정규화(nomalize)된 텐서 형태의 특징(feature)과 one-hot encoding된 텐서 형태의 정답(label)이 필요
- 이러한 변형을 위해 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()
- PIL image나 NumPy ndarray를 FloatTensor로 변환
- 이미지의 픽셀의 크기(intensity) 값을 [0., 1.] 범위로 비례하여 조정(scale)
- Lambda 변형 (Transform)
- 사용자 정의 lambda 함수를 적용
- 여기서는 정수를 one-hot encoding된 텐서로 바꾸는 함수를 정의
- 먼저 크기 10(데이터셋의 정답 개수)짜리 zero tensor 생성
- scatter_를 호출하여 주어진 정답 y에 해당하는 인덱스에 value=1을 할당
target_transform = Lambda(lambda y: torch.zeros(
10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1))
'교육 > AI+X 융합 교육' 카테고리의 다른 글
[딥러닝] Activation function (0) | 2021.08.26 |
---|---|
Image Segmentation (0) | 2021.08.24 |
[Pytorch] Dataset과 Dataloader (0) | 2021.08.20 |
[Pytorch] torchvision (0) | 2021.08.19 |
[210809] 싸이킷런 Model Selection API : 최적의 머신러닝 모델 찾기 (0) | 2021.08.12 |