본문 바로가기
Learning-driven Methodology/ML (Machine Learning)

[Machine Learning] MNIST

by goatlab 2022. 4. 28.
728x90
반응형
SMALL

MNIST (Modified National Institute of Standards and Technology database)

 

TensorFlow 샘플에 보면 mnist dataset이 많이 등장한다. MNIST는 인공지능 연구의 권위자 LeCun교수가 만든 dataset이고 현재 딥러닝을 공부할 때 반드시 거쳐야할 Hello, World같은 존재이다. MNIST는 60,000개의 train set과 10,000개의 test set으로 이루어져 있고 이 중 train set을 학습 data로 사용하고 test set을 신경망을 검증하는 데에 사용한다. MNIST는 간단한 컴퓨터 비전 dataset로, 아래와 같이 손으로 쓰여진 이미지들로 구성되어 있다. 숫자는 0에서 1까지의 값을 갖는 고정 크기 이미지 (28x28 픽셀)로 크기 표준화되고 중심에 배치되었다. 간단히 하기 위해 각 이미지는 평평하게되어 784 피쳐의 1-D numpy 배열로 변환되었다 (28 * 28).

 
MNIST data는 Yann LeCun의 웹사이트에서 제공한다. 코드를 다운로드 하고 아래와 같이 import하면 된다.
 
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("./samples/MNIST_data/", one_hot=True)

 

Mnist dataset에는 총 60,000개의 data가 있는데, 이 data는 크게 아래와 같이 세 종류의 dataset으로 나눠진다. 모델 학습을 위한 학습용 data인 mnist.train 그리고, 학습된 모델을 test하기 위한 test dataset은 minst.test, 그리고 모델을 확인하기 위한 mnist.validation dataset으로 구별된다. 각 data는 아래와 같이 train data 55000개, 테스트용 10,000개, 그리고, 확인용 data 5000개로 구성되어 있다.

 

 

각 dataset은 학습을 위한 글자 이미지를 저장한 data image 와, 그 이미지가 어떤 숫자인지를 나타낸 label data인 label로 두 개의 dataset으로 구성되어 있다.

 

이미지

 

먼저, 이미지 data를 보면 아래 그림과 같이 28x28 로 구성되어 있는데,

 

 
이를 2차원 행렬에서 1차원으로 쭈욱 핀 형태로 784개의 열을 가진 1차원 행렬로 변환되어 저장이 되어 있다. mnist.train.image는 이러한 784개의 열로 구성된 이미지가 55000개가 저장이 되어 있다.
 
 
텐서플로우의 행렬을 나타내는 shape의 형태로는 shape=[55000,784]이 된다.
마찬가지로, mnist.train.image 도 784개의 열로 구성된 숫자 이미지 데이타를 10000개를 가지고 있고 텐서플로우의 shape으로는 shape=[10000,784] 로 표현될 수 있다.
 
 

라벨 (Label)

 

Label은 이미지가 나타내는 숫자가 어떤 숫자인지를 나타내는 라벨 데이타로 10개의 숫자로 이루어진 1행 행렬이다. 0~9 순서로, 그 숫자이면 1 아니면 0으로 표현된다. 예를 들어 1인경우는 [0,1,0,0,0,0,0,0,0,0,0] 9인 경우는 [0,0,0,0,0,0,0,0,0,1] 로 표현된다.
 
이미지 data에 대한 라벨이기 때문에, 당연히 이미지 data 수만큼의 라벨을 가지게 됩니다.
 

 

728x90
반응형
LIST