머신러닝 및 딥러닝에 사용하는 손글씨 데이터 mnist 다운로드 및 구조 분석하기

안녕하세요. 언제나휴일입니다.

머신러닝이나 딥러닝에서 손글씨 인식에 관한 예를 많이 사용합니다.

이 때 직접 손글씨 데이터를 만들어 사용하는 것은 번잡한 일이라서 제공하는 mnist 파일을 다운로드 받아 사용하곤 합니다.

그런데 mnist 파일의 구조가 어떠한 구조인지 정확한 설명이 없거나 있다고 하더라도 직접 확인하고 싶은 욕구가 생길 수 있을 거예요.

이번에는 mnist 파일을 다운로드 받고 구조를 확인하는 소스 코드를 작성해 볼게요.

참고로 mnist 파일에는 60000개의 손글씨 이미지가 있고 이미지 하나당 28X28개의 픽셀로 이루어져 있습니다.

물론, 각 이미지가 어떠한 수인지 Label값도 60000개 있겠죠.

다음은 이를 확인하기 위한 코드입니다. 동영상을 참고하세요.

#mnist 다운로드 및 분석

import numpy as np
from keras import datasets

data_train,data_test = datasets.mnist.load_data()
image_train, label_train = data_train
image_test, label_test = data_test

print("image_train의 구조:",image_train.shape)
print("label_train의 구조:",label_train.shape)

print("image_test의 구조:",image_test.shape)
print("label_test의 구조:",label_test.shape)

colcnt = len(image_train[0])
rowcnt = len(image_train[0][0])

for r in range(rowcnt):
    for c in range(colcnt):
        if(image_train[0][r][c] != 0):
            print("ㅁ",end=' ')
        else:
            print("  ",end=' ')
    print()
print(label_train[0])

실행 결과

실행 결과