본문 바로가기

🤖AI/딥러닝

[딥러닝] MNIST dataset

MNIST dataset은 0부터 9까지의 수를 손글씨로 나타낸 이미지 dataset이다.

필기체 숫자의 분류를 위한 학습 데이터 셋으로 이미지와 이미지에 대한 라벨로 구성되어 있다.

 

이미지는 784(28x28)차원의 벡터이고

라벨은 0~9이다.

예시

mnist = input_data.read_data_sets("MNIST_data")MNIST_data 폴더 안에 mnist 파일들이 다운받아지고 다운받진 mnist 파일들을 load 한다는 의미이다.

 

one_hot=Trueone hot encoding을 해준다는 의미이다.

one hot encoding은 범주형 데이터를 0 또는 1의 데이터로 바꿔주는 과정이다.

만약 label이 1이면 1의 자리만 1이고 나머지 자리는 모두 0으로 나타낸다.

 

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

x는 n만큼의 random 한 mnist 이미지 데이터이고 (n, 784 차원 벡터)

y는 n만큼의 random 한 mnist 이미지 데이터의 label이다. (n, 10 차원 벡터)

 

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

(n, 284) 차원의 벡터 x를 이미지 출력을 위해 (n, 28, 28) 차원의 벡터로 reshape해준다.

 

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()

 

matplotlib을 이용해서 이미지를 확인하면 다음과 같은 결과를 볼 수 있다.

random한 mnist이미지 데이터를 불러오므로 코드를 실행할 때마다 결과는 다르게 나올 것이다.