728x90
반응형
pytorch에서 Dataset을 다루는 방법과 Transform을 사용하는 방법에 대해 알아보겠습니다
https://tutorials.pytorch.kr/beginner/basics/transforms_tutorial.html 여기서 공부를 하였고 정리하였습니다.
Transform(변형)
- 저희가 학습을 할 때 데이터가 항상 알고리즘 학습에 필요한 최적의 처리가 된 형태로 제공되지 않습니다. 그렇기 때문에 transform을 하여 데이터를 조작하고 학습에 적합하게 만들어야 합니다.
- torchVision.datasets에서 매개변수 두 개를 받는데 하나는 feature을 변경하기 위한 transform이며 다른 하나는 label을 변경하기 위한 target_transform입니다.
- torchvision.transforms 모듈은 사용하는 몇 가지 transform을 제공합니다.
- FashionMNIST의 feature은 PIL Image이며 label은 integer(정수)입니다. 학습을 하려면 normalize 된 텐서 형태의 feature과 one-hot 인코딩 된 label이 필요합니다.
- 이러한 transform을 하기 위해서 ToTensor과 Lambda를 사용합니다!
import torch
from torchvision import datasets
from torchvision.transforms import ToTensor, Lambda
dataset = datasets.FashionMNIST(
root = "data",
download= True,
train=True,
# Totensor()
# PIL Image 나 Numpy ndarray를 floatTensor로 변환하고 이미지의 픽셀의 크기 값을 [0, 1] 범위로 비레하여 scale합니다.
transform= ToTensor(),
# Lambda 변형
# 정수를 원핫 인코딩된 텐서로 바꾸는 함수를 정의
# 데이터 셋 label의 개수인 크기 10짜리 zero tensor를 만들고 scatter_를 호출하여 정답 y에 해당하는 인덱스에 value = 1을 할당합니다.
target_transform=Lambda(lambda y : torch.zeros(10, dtype = torch.float).scatter_(0, torch.tensor(y), value=1))
)
- 이번 시간은 데이터셋을 transform 하는 방법에 대해 알아봤습니다
다음 포스팅으로 찾아오겠습니다
감사합니다 :)
728x90
반응형
'AI > Pytorch' 카테고리의 다른 글
[Pytorch] Dataset과 Dataloader (0) | 2021.07.26 |
---|---|
[Pytorch] 텐서(Tensor) 조작 기초(3) (0) | 2021.07.22 |
[Pytorch] 텐서(Tensor) 조작 기초(2) (0) | 2021.07.21 |
[Pytorch] 텐서(Tensor) 조작 기초(1) (0) | 2021.06.28 |