- 정의) A set S is closed with respect to a binary operator if, for every pair of elements of S, the binary operator specifies a rule for obtaining a unique elements of S
28x28 픽셀의 바운딩 박스와 앤티엘리어싱 처리되어 그레이스케일 레벨이 들어가 있도록 평준화 되어 있음
KERAS(딥러닝 네트워크를 구축하기 위한 텐서플로의 고수준 API)
- 진입장벽이 낮고, 추상화가 잘 되어 있어 코드 가독성이 높기 때문에 주로 사용
- Backend인 Theano, TesorFlow, CNTK를 골라서 사용 가능
mnist model 구축 및 학습
1. import required modules
import numpy as np
import tensorflow as tf
from tensorflow import keras
from keras.layers import Dense
from keras.models import Sequential
from keras.datasets import mnist
x_train.astype('float32'/255.0 : 그레이스케일 color 0~255.0을 0~1로 다시 스케일링 한다는 의미이다.
keras.utils.to_categorical(Y_train,10) : 10개의 값을 one hot encoding한다는 의미이다.
4. design model(Architecture) by using Keras Sequential model
model = Sequential()
model.add(Dense(units=4, input_dim=(28*28),activation='sigmoid'))
model.add(Dense(units=10,activation='softmax'))
model.summary()
Sequential model : 뉴런의 각 레이어가 다음 레이어 위에 쌓이는 모델을 의미한다.
model.add는 말그대로 model에 레이어를 추가한다는 의미이다.
Dense는 "Dense 레이어"임을 나타내 주고, fully connected 레이어라고도 한다. 예측할 때 입력이 뉴런의 모든 단일 뉴런으로 전달됨을 의미한다.
그런 다음 각 뉴런은 어느 정도 활성화(activated)되는데, 활성화 정도는 훈련 중 학습된 가중치, 편향과 활성화 함수(activation function)을 기준으로 한다. 첫번째 레이어에서의 활성화 함수는 "sigmoid"함수이고, 두번째 레이어의 경우 "softmax"이다.
model.summary() 를 통해 작성한 model의 구조를 확인할 수 있다.
네트워크 레이어, 출력형태, 파라미터 수를 확인할 수 있다. 네트워크 크기(메모리 용량)은 대부분의 파라미터 수에 따라 달라지며 총가중치와 편향 수를 의미한다.
model을 compile하는 단계는, 학습 과정에서 사용되는 몇 가지 중요한 인수를 설정하고 훈련할 모델을 준비하는 과정이다.
optimizer : 훈련 중에 네트워크가 입력을 모델링하도록 조정하는 알고리즘을 지정하고, 여기선 'sgd'를 사용
loss : 훈련 과정에서 네트워크 예측이 실제 값에서 얼마나 멀리 떨어져있는지 계산하기 위해 사용하는 방법을 지정하고, 여기서는 'categorical_crossentropy'함수를 사용, 이 함수를 보통 손실함수라 한다. 이 외에도 mse(Mean Squared Error 평균 제곱 오차법),등이 있다.
metrics : 모델의 성능을 판단할 때 사용하는 함수를 지정하고, 여기선 'accuracy'함수 사용, 이 외에도 mae(Mean Absolute Error 평균 절대 오차법),등이 있다.