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
   26   27   28   29   30   31   32   33   34   35