1. 데이터셋 생성하기- 원본 데이터를 불러오거나 시뮬레이션을 통해 데이터를 생성합니다.
- 데이터로부터 훈련셋, 검증셋, 시험셋을 생성합니다.
- 이 때 딥러닝 모델의 학습 및 평가를 할 수 있도록 포맷 변환을 합니다.
1.3 원핫인코딩 (one-hot encoding) 처리2. 모델 구성하기- 시퀀스 모델을 생성한 뒤 필요한 레이어를 추가하여 구성합니다.
- 좀 더 복잡한 모델이 필요할 때는 케라스 함수 API를 사용합니다.
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 64) 50240
_________________________________________________________________
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 50,890
Trainable params: 50,890
Non-trainable params: 0
_________________________________________________________________
3. 모델 학습과정 설정하기- 학습하기 전에 학습에 대한 설정을 수행합니다.
- 손실 함수 및 최적화 방법을 정의합니다.
- 케라스에서는 compile() 함수를 사용합니다.
4. 모델 학습시키기- 훈련셋을 이용하여 구성한 모델로 학습시킵니다.
- 케라스에서는 fit() 함수를 사용합니다. ### 4.1 배치사이즈
- 몇 개를 처리하고 해답을 맞추는지를 의미함
- 100 : 100개를 처리하고 해답을 맞춤
- 1: 1개를 처리하고 해답을 맞춤
- 배치사이즈가 작을수록 갱신이 자주 발생함 ### 4.2 에폭
- 같은 데이터셋으로 반복적으로 가중치를 갱신하면서 학습
- 서로 다른 20문제를 1번 푸는 경우보다 같은 1문제를 20번 푸는 경우 정확도가 높다.
Train on 18000 samples, validate on 42000 samples
Epoch 1/10
18000/18000 [==============================] - 3s 174us/sample - loss: 1.1262 - accuracy: 0.7234 - val_loss: 0.6417 - val_accuracy: 0.8418
Epoch 2/10
18000/18000 [==============================] - 3s 149us/sample - loss: 0.5091 - accuracy: 0.8707 - val_loss: 0.4685 - val_accuracy: 0.8749
Epoch 3/10
18000/18000 [==============================] - 3s 146us/sample - loss: 0.4091 - accuracy: 0.8895 - val_loss: 0.4090 - val_accuracy: 0.8867
Epoch 4/10
18000/18000 [==============================] - 3s 146us/sample - loss: 0.3656 - accuracy: 0.8982 - val_loss: 0.3786 - val_accuracy: 0.8937
Epoch 5/10
18000/18000 [==============================] - 3s 145us/sample - loss: 0.3390 - accuracy: 0.9049 - val_loss: 0.3586 - val_accuracy: 0.8979
Epoch 6/10
18000/18000 [==============================] - 3s 146us/sample - loss: 0.3199 - accuracy: 0.9101 - val_loss: 0.3431 - val_accuracy: 0.9031
Epoch 7/10
18000/18000 [==============================] - 3s 146us/sample - loss: 0.3050 - accuracy: 0.9151 - val_loss: 0.3312 - val_accuracy: 0.9058
Epoch 8/10
18000/18000 [==============================] - 3s 145us/sample - loss: 0.2926 - accuracy: 0.9179 - val_loss: 0.3232 - val_accuracy: 0.9087
Epoch 9/10
18000/18000 [==============================] - 3s 145us/sample - loss: 0.2815 - accuracy: 0.9211 - val_loss: 0.3122 - val_accuracy: 0.9111
Epoch 10/10
18000/18000 [==============================] - 3s 145us/sample - loss: 0.2719 - accuracy: 0.9248 - val_loss: 0.3071 - val_accuracy: 0.9125
5. 학습과정 그래프로 확인- 히스토리 객체 생성
- 매 에포크 마다의 훈련 손실값 (loss)
- 매 에포크 마다의 훈련 정확도 (acc)
- 에포크 마다의 검증 손실값 (val_loss)
- 에포크 마다의 검증 정확도 (val_acc)
6. 모델 평가하기- 준비된 시험셋으로 학습한 모델을 평가합니다.
- 케라스에서는 evaluate() 함수를 사용합니다.
10000/10000 [==============================] - 0s 40us/sample - loss: 0.2848 - accuracy: 0.9197
loss_and_metrics : [0.2847642801702023, 0.9197]
6-1 모델 저장하기- 모델에는 다음과 같은 정보가 저장
- 나중에 모델을 재구성하기 위한 모델의 구성 정보
- 모델를 구성하는 각 뉴런들의 가중치
- 손실함수, 최적하기 등의 학습 설정
- 재학습을 할 수 있도록 마지막 학습 상태
7. 모델 사용하기- 임의의 입력으로 모델의 출력을 얻습니다.
- 케라스에서는 predict() 함수를 사용합니다.
True : 6, Predict : 6
True : 6, Predict : 6
True : 7, Predict : 7
True : 5, Predict : 5
True : 0, Predict : 6
|