값이 예상과 다르게 나오는 경우에 대해 2개의 처리를 수행해 봤는데.. 사실 두번째 방법은 정상적으로 수행되기 시작하는데 왜 그런지 잘모르겠네... ㅠㅠ 따로 정리해둬야 겠다.
101에서 110까지 구하기
1. 데이터 준비데이터와 정답(학습과 테스트)2. 모델 구성모델 생성- 얼마나 많은 레이어와 노드를 준비할 것인가 설계
- Dense(5, input_dim=1) : 1개의 입력으로 5개의 노드로 출력한다는 의미
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 5) 10
_________________________________________________________________
dense_1 (Dense) (None, 3) 18
_________________________________________________________________
dense_2 (Dense) (None, 1) 4
=================================================================
Total params: 32
Trainable params: 32
Non-trainable params: 0
_________________________________________________________________
3. 컴파일 및 훈련모델 컴파일- 모델을 실행시키지 전에 머신이 이해할 수 있도록 컴파일 시킴
Train on 10 samples, validate on 10 samples
Epoch 1/100
10/10 [==============================] - 1s 53ms/sample - loss: 23.3520 - accuracy: 0.0000e+00 - val_loss: 6381.3751 - val_accuracy: 0.0000e+00
Epoch 2/100
10/10 [==============================] - 0s 3ms/sample - loss: 20.7645 - accuracy: 0.0000e+00 - val_loss: 5674.8118 - val_accuracy: 0.0000e+00
.....
Epoch 98/100
10/10 [==============================] - 0s 3ms/sample - loss: 0.0186 - accuracy: 0.1000 - val_loss: 17.5472 - val_accuracy: 0.0000e+00
Epoch 99/100
10/10 [==============================] - 0s 3ms/sample - loss: 0.0184 - accuracy: 0.1000 - val_loss: 17.7878 - val_accuracy: 0.0000e+00
Epoch 100/100
10/10 [==============================] - 0s 3ms/sample - loss: 0.0178 - accuracy: 0.1000 - val_loss: 17.2270 - val_accuracy: 0.0000e+00
10/10 [==============================] - 0s 1ms/sample - loss: 17.2270 - accuracy: 0.0000e+00
loss : 17.227038288116454
acc : 0.0
결과물 :
[[ 97.040344]
[ 97.99832 ]
[ 98.95628 ]
[ 99.91426 ]
[100.87222 ]
[101.830185]
[102.78815 ]
[103.746124]
[104.70411 ]
[105.66206 ]]
회귀 모델- 1 ~ 10까지 데이터로 학습한 후 101 ~ 110까지 예측하기
2. 모델 구성하기- Dense 레이어가 두 개인 다층퍼셉트론 모델.
- 첫 번째 레이어는 5개의 뉴런을 가진 Dense 레이어
- 오류역전파가 용이한 relu 활성화 함수를 사용.
- 두 번째 레이어는 3개의 뉴런을 가진 Dense 레이어
- 출력 레이어인 세 번째 레이어는 하나의 수치값을 예측을 하기 위해서 1개의 뉴런을 가지며, 별도의 활성화 함수는 relu를 사용
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 5) 10
_________________________________________________________________
dense_1 (Dense) (None, 3) 18
_________________________________________________________________
dense_2 (Dense) (None, 1) 4
=================================================================
Total params: 32
Trainable params: 32
Non-trainable params: 0
_________________________________________________________________
3. 모델 학습과정 설정하기모델 컴파일- 모델을 실행시키지 전에 머신이 이해할 수 있도록 컴파일 시킴
- loss : 손실 마수는 어떤 것을 사용할 것인가? --> mse
- optimizer : 최적화 함수는? --> adam, rmsprop
- metrics : 어떤 방식? --> accuracy, mse(mean squared error) 적용
4. 모델 학습시키기- epochs : 훈련 횟수
- batch_size : 몇 개씩 끊어서 작업을 할 것인가를 의미
- batch_size를 크게 잡을 경우 속도가 빨라지지만 정확도가 떨어짐
- 작게 잡을 경우 속도는 떨어지지만 정확도는 올라감
- valication_data : 검증 데이터
Train on 10 samples, validate on 10 samples
Epoch 1/100
10/10 [==============================] - 1s 53ms/sample - loss: 1.3564 - accuracy: 0.1000 - val_loss: 320.8551 - val_accuracy: 0.0000e+00
Epoch 2/100
10/10 [==============================] - 0s 3ms/sample - loss: 0.7829 - accuracy: 0.1000 - val_loss: 196.0735 - val_accuracy: 0.0000e+00
.... Epoch 99/100
10/10 [==============================] - 0s 3ms/sample - loss: 1.7687e-06 - accuracy: 0.1000 - val_loss: 0.0019 - val_accuracy: 0.0000e+00
Epoch 100/100
10/10 [==============================] - 0s 3ms/sample - loss: 1.6292e-06 - accuracy: 0.1000 - val_loss: 0.0015 - val_accuracy: 0.0000e+00
10/10 [==============================] - 0s 1ms/sample - loss: 0.0015 - accuracy: 0.0000e+00
loss : 0.0014701355015859009
acc : 0.0
결과물 :
[[100.96341 ]
[101.963036]
[102.96264 ]
[103.96226 ]
[104.96186 ]
[105.96148 ]
[106.96109 ]
[107.96071 ]
[108.96032 ]
[109.95994 ]]
|