callback이란? 내가 만든 함수를, 프레임워크가 특정 시점에 실행 시켜 주는것
early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience = 15)
tf.keras.callbacks.EarlyStopping 은 훈련 중 모델의 성능이 개선되지 않을 경우
학습을 조기에 중단하는 콜백 이며
monitor 는 모니터링할 것을 지정하는 여기서는 'val_loss'를 지정
검증 데이터셋의 손실값을 지켜볼것이다
patience는 인내심 이라는 뜻이며 학습도중 검증데이터값이 개선되지 않는 상황이
연출 될때 중단할지를 지정
15로 설정하게 되면 에포크 도중 성능 향상이 없는 15번째가 오면 학습을 중단한다
이는 오버핏팅을 방지하기 위함이다
epoch_history = model.fit(X_train, y_train, epochs = 100000, validation_split = 0.2, callbacks = [ early_stop ] )
call back을 지정하고 딥러닝을 시작하자
에포크 100000회의 반의 반도 가지못하고
57번만에 학습을 중단했다
파라미터 안의 Validation 은
에포크가 한번 끝날때마다 학습에 사용하지 않은 데이터로
시험을 보는것을 말한다 like 쪽지시험 or 모의고사
일반적으로
인공지능 학습이 완전히 다 끝났을때 평가하는 것을 테스트라 하고
밸리데이션은 에포크가 끝날때마다 평가한다
validation_split = 0.2은
주어진 학습 데이터셋의 20%를 검증 데이터로 분리하여 사용하게된다
학습데이터가 1000개였다면 200개를 에포크가 1회 종료될때마다 실행된다
콜백과 마찬가지로
오버핏팅을 방지하며 모델의 일반화 성능을 향상시키는 데 도움이된다
plt.plot(epoch_history.history['loss'])
plt.plot(epoch_history.history['val_loss'])
plt.legend(['loss','val_loss'])
plt.show()
이를 차트로 보게되면 이렇게 그려진다
학습하는 데이터의 값은 점점 맞춰가지만
학습데이터 외의 데이터에선 점점 오차율이 올라가고 있다
중지 시키지 않았다면 이런 결과를 얻을 것이다
학습된 데이터는 점점 잘 맞추고
처음 보는 데이터는 점점 모르게 되는 오버핏팅 현상이다
model.evaluate(X_test,y_test)
evaluate로 모델의 손실(loss)과 성능(정확도)을 볼 수 있다
모델이 테스트 데이터에서 얼마나 잘 작동하는지 확인할 수 있으며
모델을 평가할 때 중요한 지표이다
'Python > DeepLearning' 카테고리의 다른 글
딥러닝 - 이미지 분류 2) 모델 생성 및 확인 (0) | 2024.04.18 |
---|---|
딥러닝 - 이미지 분류 1) Data Preprocessing (0) | 2024.04.18 |
딥러닝 - GridSearch 그리드서치 (베스트 모델 찾기) (0) | 2024.04.17 |
딥러닝 - New 데이터의 예측법 (1) | 2024.04.17 |
ANN - 개념정리 (0) | 2024.04.16 |