[Deep Learning] MNIST
CS/Deep Learning

[Deep Learning] MNIST

MNIST

- 손으로 쓴 숫자들로 이루어진 대형 데이터베이스. 이미지 + 이미지에 해당하는 라벨로 구성되어 있다. 여기서 라벨이란 해당 이미지가 의미하는 숫자다.

- 이미지 하나당 28X28 = 784차원의 픽셀로 이루어져 있다. 각각 픽셀 하나는 0-1사이의 값인데 0에 가까우면 흰색으로 칠해서 이미지를 보여주고 1에 가까우면 검은색으로 칠한다. 이를 통해 컴퓨터가 어떤 이미지인지 인식하게 된다. 여기서 픽셀을 표현하는 벡터는 [ 0, 0, 0, 1, 0 ,... 0] -> 이와 같이 linear하게 표현된다. 

- 라벨은 0부터 9까지 할당된다. 라벨도 [0, 0, 1, 0,...,0] -> 이와 같이 one-hot방식으로 표현된다. 

 

MNIST data

7만개의 데이터가 있다.

Training Data Test data Validation data
55,000개 10,000개 5,000개
minist.train minist.test minist.validation
학습하는데 필요한 데이터 성능 검증 데이터 학습 유효성 검사 데이터

EX) mnist.train.images = [55,000 X 784]차원

 

MNIST 사용법

#mnist dataset 설치, one_hot방식으로
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/",one_hot=True)

#x: n만큼의 random한 mnist 이미지 데이터(n, 784 차원 벡터)(n=2이면 2개의 숫자이미지 & 숫자 하나하나가 784차원)
#y: n만큼의 random한 mnist 이미지 데이터의 label(n, 10 차원 벡터)(n=2이면 2개의 숫자이미지 & 10: 라벨 개수 0~9)
x,y = mnist.train.next_batch(n)

#x(n,284) 차원의 벡터 -> (n, 28, 28) 차원의 벡터로 reshape (이미지화 시키기 위해)
mnist_image = np.array(x).reshape((28,28))

여기서 one_hot방식이란 label : 2일 경우 [ 0 0 1 0 0 ...] 이렇게 표현되는 방식이다.

 

 

이미지 라이브러리 설치

이미지로 확인 할 수 있도록 이미지 라이브러리를 설치해준다.

//anaconda prompt에
conda install matplotlib

 

#MNIST

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

x, y = mnist.train.next_batch(1)

mnist_image = np.array(x).reshape((28, 28))

plt.title("label : " + str(np.where(y[0] == 1)[0][0]))
plt.imshow(mnist_image, cmap="gray")
plt.show()

결과(랜덤한 숫자가 나옴)

728x90
반응형