카테고리 없음

[딥러닝] 이미지 처리를 위한 데이터 전 처리_MNIST 분류 CNN 모델

오기오기 2021. 11. 24. 02:19
728x90
반응형

 

 

MNIST는 손글씨로 된 사진을 모아 둔 데이터로 손으로 쓴 0부터 9까지의 글자들이 있고,

이 데이터를 사용해서 신경망을 학습시키고, 학습 결과가 손글씨를 인식할 수 있는지 검증할 예정입니다

출처: wikipedia

MNIST는 가로 길이와 세로 길이만 존재하는 2차원 데이터이기 때문에 CNN 모델을 사용하기 위해서는 채널 차원을 추가해서 데이터 모양을 바꿔줘야합니다

(* axis에 -1을 넣으면 어떤 data가 들어오던 마지막 축의 index를 의미합니다)

#차원추가함수
tf.expand_dims(data, axis)

이제 직접 코드로 구현해봅시다 

우선 필요한 라이브러리를 불러와줍니다 

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

텐서플로우 내에 있는 데이터인 mnist를 불러옵니다

mnist = tf.keras.datasets.mnist

학습을 위해 MNIST 데이터 세트를 Train set과 Test set으로 나누어 줍니다.

(* 이미 텐서형태로 저장되어있기 때문에 따로 변환 할 필요가 없습니다)

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# Train 데이터 5000개와 Test 데이터 1000개를 사용
train_images, train_labels = train_images[:5000], train_labels[:5000]
test_images, test_labels = test_images[:1000], test_labels[:1000]

CNN 모델의 입력으로 사용할 수 있도록 (샘플개수, 가로픽셀, 세로픽셀, 1) 형태로 변환

train_images = tf.expand_dims(train_images, -1)
test_images = tf.expand_dims(test_images, -1)

 

728x90
반응형