이번에는 mnist data를 활용해보려고 합니다 :)
mnist는 숫자 0부터 9까지의 이미지로 구성된 손글씨 데이터 셋입니다.
Tensorflow를 설치하고 데이터 정규화를 위해 MinMaxScaler를 import 합니다.
import tensorflow as tf
from sklearn.preprocessing import StandardScaler, MinMaxScaler
mnist 데이터 셋을 불러옵니다.
mnist = tf.keras.datasets.mnist
train과 test 데이터 셋 분리
(x_train, y_train), (x_test, y_test) = mnist.load_data()
정규화
: 정규화는 모델의 정확도를 높이기 위해 필요한 작업입니다.
- 최댓값으로 나누기 - ex) x_train/255, x_test/255 (여기서 255는 mnist 픽셀의 최댓값)
- MinMaxScaler을 통해 0-1 값으로 반환하여 기계가 학습할 수 있도록 만들어줍니다.
scaler = MinMaxScaler()
scaler.fit(x_train)
x_train_s = scaler.transform(x_train)
모델 생성
: 신경망 파트를 만들어줍니다.
*Flatten - 2차원 배열을 1차원 배열로 바꾸어줍니다.
*activation - 'sigmoid': 정답 여부 한가지만 확인할 때, 'softmax': 여러 값 확인할 때
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28,28)), #레이어 생성 28*28개 데이터 생성
tf.keras.layers.Dense(512, activation = 'relu'), # 512개의 신경망으로 이루어짐
tf.keras.layers.Dense(10, activation = 'softmax') #output 생성, 10개, softmax라는 활성함수
])
모델 컴파일
model.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
모델 피팅
*validation split: 몇프로가지고 트레이닝할지 설정
model.fit(x_train, y_train, epochs = 10, validation_split = 0.2)
모델 피팅을 진행하면 아래와 같이 설정한 epochs 수 만큼 피팅이 진행되는 것을 확인할 수 있습니다.

학습한 모델 저장
model.save('model.h5')
! 데이터를 정규화 한 데이터와 하지 않은 데이터를 비교했을 때,
정규화 했을 때 정확도가 더 상승하는 것을 확인할 수 있었습니다.
'Python > 머신러닝, 딥러닝' 카테고리의 다른 글
[딥러닝] CNN 이미지 학습 모델 개념 정리 (0) | 2022.05.23 |
---|---|
[딥러닝] CNN을 통한 이미지 학습 분류 (0) | 2022.05.17 |
KoNLPy 설치 및 한국어 형태소 라이브러리 비교 (0) | 2022.04.29 |
scikit-learn(사이킷 런) 활용하여 정답률 확인하기 (0) | 2022.04.28 |
TensorFlow(텐서플로우) 설치하기 (0) | 2022.04.27 |