본문 바로가기
학부 강의 노트/기상 인공지능 특론

신경망의 구조 - MNIST 손글씨 예제로 살펴보는

by Dr. STEAM 2021. 11. 22.
반응형

MNIST 손글씨 딥러닝 예제를 통한 신경망 구조 설명

1. 훈련/테스트 세트 구성

>>> import tensorflow as tf  

>>> from kerase.datasets import mnist
>>>  mnist = tf.keras.datasets.mnist
>>> (x_train, y_train), (x_test, y_test) = mnist.load_data()  # train / test set을 알아서 나눔
# mnist 데이터는 0~255 범위의 데이터 
# 이를 0~1 사이로 맞춰주기 위해서 255로 나눔.
# 딥러닝은 0~1 사이로 input 데이터의 범위를 해줘야.

>>> x_train, x_test = x_train / 255.0, x_test / 255.0
>>> x_train.shape

 

2. 모델 구성

Layer(층):

데이터 처리 필터 

어떤 데이터가 들어가면 더 유용한 형태로 출력됨.

즉, 주어진 문제에 더 의미 있는 표현을 입력 데이터로 부터 추출함

여러 층을 통과하면서 점진적으로 데이터를 정제함.

데이터 정체 필터(층)가 연속되어 있는 데이터 프로세싱을 위한 여과기 같다고 생각할 수 있음. 

 

>>> model = tf.keras.models.Sequential([
...  tf.keras.layers.Reshape((28, 28, 1)),
...  tf.keras.layers.Conv2D(16, 3, activation='relu'),
...  tf.keras.layers.Flatten(),
...  tf.keras.layers.Dense(128),
...  tf.keras.layers.Dense(10, activation='softmax')
... ])

 

3. 컴파일 (compile)

손실함수 (loss function):

신경망의 성능을 측정하는 방법

모델(네트워크)이 옳은 방향으로 학습될 수 있도록 해줌. 

 

옵티마이저(optimizer):

입력 데이터와 손실 함수를 기반으로 네트워크를 업데이트하는 메커니즘

 

모니터링 지표

정확도 등

>>> model.compile(optimizer='adam',
...              loss='sparse_categorical_crossentropy',
...              metrics=['accuracy'])

 

4. 학습

>>> model.fit(x_train, y_train, epochs=5)

 

5. 모델 평가

>>> test_loss, test_acc = model.evaluate(x_test, y_test)
>>> print('테스트 정확도:', test_acc)

 

 

 

 

728x90
반응형