Keras 개발 process
- 입력 텐서(X)와 출력 텐서(y)로 이뤄진 훈련 데이터를 정의
- 입력과 출력을 연결하는 Layer(층)으로 이뤄진 네트워크(모델)을 정의
- Sequential 방식: 순서대로 쌓아올린 네트워크로 이뤄진 모델을 생성하는 방식
- Functional API 방식: 다양한 구조의 네트워크로 이뤄진 모델을 생성하는 방식
- Subclass 방식: 네트워크를 정의하는 클래스를 구현.
- 모델 Compile(컴파일)
- 모델이 Train(학습)할때 사용할 손실함수(Loss Function), 최적화기법(Optimizer), 학습과정을 모니터링할 평가지표(Metrics)를 설정
Compile: 실행할 수 있는 상태로 만들어 주는 것.
- Training(학습/훈련)
- Train dataset을 이용해 모델을 Train 시킨다.
MNIST 이미지 분류
MNIST(Modified National Institute of Standards and Technology) database
- 흑백 손글씨 숫자 0-9까지 10개의 범주로 구분해놓은 데이터셋
- 하나의 이미지는 28 * 28 pixel 의 크기
- 6만개의 Train 이미지와 1만개의 Test 이미지로 구성됨.
데이터 준비
- X (Input Data Image)
- 0 ~ 1 사이의 값으로 정규화 시킨다.
- y (Output Data)
- one hot encoding 처리
- Label이 다중분류(Multi class classification)일 경우 One Hot Encoding 한다.
- 딥러닝 모델이 각 Label별 확률을 출력하도록 정의 되기 때문에 y(정답)도 같은 형태로 만들어 줘야 한다.
- Label이 다중분류(Multi class classification)일 경우 One Hot Encoding 한다.
- Keras의 onehot encoding 처리 함수
- tensorflow.keras.utils.to_categorical()
- one hot encoding 처리