728x90
반응형
MINIST 데이터셋
- 손글씨 숫자 이미지 조합
- 간단한 실험부터 논문으로 발표되는 연구까지 다양한 곳에서 이용하고 있다.
- 0부터 9까지의 이미지로 구성되어 있다.
- 훈련 이미지가 60,000장 시험 이미지가 10,000장 준비되어 있다.
- 훈련 이미지를 사용해 모델을 학습하고 학습한 모델로 시험 이미지들을 얼마나 정확하게 분류하는지를 평가한다.
dataset/mnist.py 파일 다운로드
그 후 같은 폴더에 넣을거면 dataset 코드 삭제
다운로드 경로
https://github.com/oreilly-japan/deep-learning-from-scratch
파이썬 코드
# 손글씨 숫자 인식
# MNIST 데이터셋 사용 - 손글씨 숫자 이미지 집합 기계학습 분야에서 아주 유명한 데이터셋
import sys, os
sys.path.append(os.pardir) #부모 디렉터리의 파일을 가져올 수 있도록 설정
from mnist import load_mnist
# 몇 분 정도 걸림
(x_train, t_train), (x_test, t_test) = load_mnist(flatten = True, normalize = False)
# 각 데이터 형상 출력
print("x_train.shape(행렬)",x_train.shape)
print("t_train.shape(행렬)",t_train.shape)
print("x_test.shape",x_test.shape)
print("t_test.shape",t_test.shape)
normalize
- normalize는 입력 이미지의 픽셀값을 0.0~ 1.0 사이의 값으로 정규화할지를 정한다. False로 설정하면 입력 이미지의 픽셀은 원래 값 글대로 0~255 사이의 값을 유지한다.
flatten
- flatten은 입력 이미지를 평탄하게 - 1차원 배열로 만들지를 정한다. False로 설정하면 입력 이미지를 1*28*28의 3차원 배열로, True로 설정하면 784개의 원소로 이뤄진 1차원 배열로 저장한다.
one_hot_label은 레이블을 원-핫 인코딩 형태로 저장할지를 정한다.
원-핫 인코딩
- [0,0,1,0,0,0,0,0,0,0,0]처럼 정답을 뜻하는 원소만 1이고(hot) 나머지는 모두 0인 배열이다.
- one_hot_label이 False면 '7'이나 '2'와 같이 숫자 형태의 레이블을 저장하고 True일 때는 레이블을 원-핫 인코딩 해서 저장한다.
MNIST 이미지 불러오기
import sys, os
sys.path.append(os.pardir) # 부모 디렉토리의 파일을 가져올 수 있도록 설정
import numpy as np
from mnist import load_mnist
from PIL import Image
def img_show(img):
pil_img = Image.fromarray(np.uint8(img))
pil_img.show()
(x_train, t_train),(x_trst, t_test) = load_mnist(flatten=True, normalize=False)
img = x_train[0]
label = t_train[0]
print("label : ",label)
print(img.shape)
img = img.reshape(28,28) # 원래 이미지의 모양으로 변형
print(img.shape)
img_show(img)
출처 : 밑바닥부터 시작하는 딥러닝
https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198
728x90
반응형
최근댓글