본문 바로가기
MNIST 결과물 확인하기 (Code Snippet)

보통 MNIST를 활용해서 여러 가지 모형의 Simple 테스트를 하는 일이 많은데 이때, 원본과 결과물을 비교해서 그려볼 수 있는 matplotlib 코드인데요, 특히 이미지 처리 후에 비교할 때 애용하게 될 것이라 생각합니다. 도움이 될 수 있도록 Snippet을 둡니다. 

먼저 MNIST를 읽어 들이는 방법은 다음과 같습니다. 신경망에 넣기 좋게 784로 flatten하는 것입니다. 

from keras.datasets import mnist
import numpy as np
(x_train, _), (x_test, _) = mnist.load_data()  # MNIST 읽어들임

# MNIST 데이터를 정규화함.
x_train = x_train.astype('float32') / 255.
x_test = x_test.astype('float32') / 255.

# MNIST를 28by28에서 784로 길게 flatten함. 이렇게 하면 곧바로 입력으로 사용할 수 있음.
x_train = x_train.reshape((len(x_train), 784)) 
x_test = x_test.reshape((len(x_test), 784))

 

어쨌건 이렇게 만든 MNIST 입력을 신경망에 넣은 후에, 뭔가 쿵짝쿵짝 한 출력을 최초의 입력과 눈으로 비교하면 좋겠죠! 그건 다음과 같이 합니다. 

# matplotlib을 import
import matplotlib.pyplot as plt  
# random int import → random index 확인용
from random import randint

n = 10  # 몇개의 숫자를 확인할 것인지 설정
plt.figure(figsize=(20, 4)) : # 그림의 크기를 설정, 크기가 작으면 키우면 됨.
# n개 만큼 확인
for i in range(n): 
    # 테스트 데이터중 random index를 정함 
    idx = randint(0, len(x_test)) # x_test는 테스트 데이터
    
    #  plt.subplot(nrows,ncols,index) 이므로, row크기, column크기, index 입니다. 왼쪽부터 차례대로 subplot을 함
    
    # 원본 데이터
    ax = plt.subplot(2, n, i + 1)  # 첫번째 row에 차례대로 그림
    plt.imshow(x_test[idx].reshape(28, 28)) # 28 by 28 그림으로 reshape함
    plt.gray()
    ax.get_xaxis().set_visible(False)  # 축을 그리지 않음
    ax.get_yaxis().set_visible(False)  # 축을 그리지 않음

    # 재구성된 데이터
    ax = plt.subplot(2, n, i + 1 + n) #  두번째 row에 차례대로 그림 
    plt.imshow(decoded_imgs[idx].reshape(28, 28)) # 28 by 28 그림으로 reshape함
    plt.gray()
    ax.get_xaxis().set_visible(False) # 축을 그리지 않음
    ax.get_yaxis().set_visible(False) # 축을 그리지 않음
plt.show()

 

보통 이런 식의 결과물을 그릴 수가 있는데, 위 쪽이 원본/ 아래 쪽이 결과물입니다.  알아두면 편리한 방법입니다. 

 

Copy&Paste로 잘 이용해 봅시다. 헤헤

친절한 데이터 사이언스 강좌 글 전체 목차 (정주행 링크) -



댓글





친절한 데이터 사이언스 강좌 글 전체 목차 (정주행 링크) -