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
반응형
'CS > Deep Learning' 카테고리의 다른 글
[Deep Learning] Cross-entropy (0) | 2020.04.05 |
---|---|
[Deep Learning] 활성화 함수(Activation function) (0) | 2020.04.05 |
[Deep Learning] MLP(Multi-layer perceptrons) (0) | 2020.03.28 |
[Deep Learning] Tensorflow 설치 및 기본 사용법 (0) | 2020.03.24 |
[Deep Learning] Introduction (0) | 2020.03.23 |