티스토리 뷰

머신러닝

[tensorflow] MNIST Data 설명

느린 개미 2017. 11. 22. 02:46
반응형

김성훈 교수님의 모두를 위한 딥러닝 강의를 들을 때 가장 많이 사용되는 데이터가 MNIST 이다. 

따라서 해당 데이터에 대해 알아보고자 한다. 


                                             (이미지 출처 : https://www.tensorflow.org/get_started/mnist/beginners)


https://www.tensorflow.org 에 이에 대한 설명이 친절하게 나와있다. 

(https://www.tensorflow.org/get_started/mnist/beginners)

(https://www.tensorflow.org/get_started/mnist/pros)


첫 부분에 Programming 에는 Helloworld 가 있듯이, Machine learning 에는 MNIST 가 있다! 라는 말에 귀여움이 느껴진다.


실제 MNIST 데이터를 호출 시 Yann LeCun's website 에서 호스팅되게 된다.  데이터는 총 4가지 파일이며 아래와 같다.


train-images-idx3-ubyte.gz:  training set images (9912422 bytes) 

train-labels-idx1-ubyte.gz:  training set labels (28881 bytes) 

t10k-images-idx3-ubyte.gz:   test set images (1648877 bytes) 

t10k-labels-idx1-ubyte.gz:   test set labels (4542 bytes)


Tensorflow 에서 해당 데이터의 호출코드는 아래와 같이 단 2줄이며 호출 시 아래와 같은 데이터 구성을 갖는다.



Training data (mnist.train) : 55,000 data

Test data (mnist.test)       : 10,000 data 

Validation data (mnist.validation) : 5,000 data  

모든 MNIST data는 images와 labels 부분으로 구분된다. 


<Tensorflow 에서 호출 시 MNIST data 구조> 

 Training data (55,000개)

 mnist.train

 Test data (10,000개)

 mnist.test

 Validation data (5,000개)

 mnist.validation

 images

 labels

 images

 labels

 images

 labels


각 image 는 28 * 28 픽셀로, 28 * 284 = 784 vector 로 표현되며, 각 label은  0 - 9 까지의 값을 가진다. 

이 label 은 "one-hot vectors" 표현된다.  

"one-hot vectors" 는 하나의 1인 차원과 그 외는 0 인 차원을 가지며 그 예는 다음과 같다. 

3 인 경우 : [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]

(one-hot vector 관련해서는 이전 포스팅인 소프트맥스(SoftMax) 참고)


따라서 Training data set 의 경우에는, 

mnist.train.images 는 [55,000, 784] , mnist.train.labels 는 [55,000, 10] 의 형태를 가지며 아래 그림과 같다. 




(이미지 출처 : https://www.tensorflow.org/get_started/mnist/beginners)

반응형