Page 31 -
P. 31
2. 차원의 저주(curse of dimensionality) 예방: 차원의 저주 문제를 예방할 수 있습니다. 오토인코더
는 특성 개수를 줄여 주기 때문에 데이터 차원이 감소하여 차원의 저주를 피할 수 있습니다.
3. 특성 추출: 오토인코더는 비지도 학습으로 자동으로 중요한 특성을 찾아 줍니다. 예를 들어 눈
모양, 털 색, 꼬리 길이 등 개의 중요한 특성을 자동으로 찾아 줍니다.
이제 파이토치에서 오토인코더를 구현해 볼 텐데, 그동안 진행했던 모델과는 다르게 조금 복잡할
수 있으니 반드시 예제를 실습하면서 이해하기 바랍니다.
예제는 다음 그림과 같은 구조의 오토인코더를 사용합니다.
그림 13-5 오토인코더의 예제
ੑ۱ ֢ૉ ੋ؊ ਫ਼ ߭ఠ ٣؊ ۱
먼저 필요한 라이브러리를 호출합니다.
코드 13-1 라이브러리 호출
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import Dataset, DataLoader
import matplotlib.pylab as plt
import torchvision.datasets as datasets
import torchvision.transforms as transforms
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
이 예제는 케라스에 내장되어 제공하는 MNIST 데이터셋을 사용합니다.
MNIST 데이터셋을 내려받은 후 텐서로 변경하고 데이터로더에 전달합니다.
코드 13-2 MNIST 데이터셋을 내려받아 전처리
transform = transforms.Compose([transforms.ToTensor()]) transforms.ToTensor( )는 이미지를
파이토치의 텐서 형태로 변형시켜 줍니다.
train_dataset = datasets.MNIST(
root="../chap13/data", train=True, transform=transform, download=True)
MNIST를 내려받은 후 텐서 형태로 변형
test_dataset = datasets.MNIST(
686