MNIST For ML Beginners (1)
MNIST 는 Mixed National Institute of Standards and Technology 의 약어로, 아래의 손글씨 이미지 등을 포함한 시각 데이터 셋이다.
이미지와 각각의 이미지에 대한 레이블을 포함하고 있다. 예를 들어, 위의 이미지의 레이블은 각각 5, 0, 4, 그리고 1이다. 본 게시물에서는 이러한 이미지를 관찰하고 숫자를 맞추는 모델을 트레이닝함으로써 텐서플로에 발을 딛는 것을 목표로 한다. 소프트맥스 회귀(Softmax Regression)라고 불리는 간단한 모델로부터 시작한다.
아래와 같이 실습에 필요한 파일을 적당한 위치에 다운로드한다.
앞에서도 언급했지만 MNIST 데이터는 수기 이미지와 그에 대응하는 레이블 이상의 2파트로 구분됩니다. 이 중 이미지를 "x", 그리고 레이블을 "y" 라고 합니다. 트레이닝 셋과 테스트 셋 모두 각각의 이미지와 레이블을 포함하고 있습니다. 예를 들면, 트레이닝 이미지는 mnist.train.images
그리고 트레이닝 라벨은 mnist.train.labels
입니다. 각각의 이미지는 28*28 픽셀이며, 이는 아래 이미지와 같이 일종의 배열로 볼 수 있습니다.
그리고 이 배열은 28*28=784 차원의 벡터로 변환할 수 있다. 이런 관점에서 MNIST 이미지는 784-차원의 벡터 공간의 점의 모음이다. mnist.train.images
는
[55000, 784]
의 형태를 가진 텐서(n-차원 배열)이다. 첫번째 차원은 이미지의 인덱스이고, 두 번째 차원은 각 이미지의 개별 픽셀의 인덱스이다. 그리고 텐서의 각각의 엔트리는 0 과 1 사이의 픽셀 강도를 가진다.
MNIST 의 각각의 이미지는 이에 대응하는 0 과 9 사이에 해당하는 레이블을 가지고 있다. 튜토리얼의 목적상 여기서는 라벨을 "one-hot
vectors" 로 만들 것이다. "one-hot vector" 는 대부분의 차원이 0 이고 단 하나의 차원만 1인 벡터로, 여기서는 n번째 숫자는 n번째 차원이 1인 벡터로 표현된다. 예를 들어, 3은 [0,0,0,1,0,0,0,0,0,0,0] 이 되는 것이다. 결론적으로 mnist.train.labels
는
[55000, 10]
실수의 배열이 되는 것이다.