이번 포스팅에서는
제가 너무나도 해보고 싶었던
(눈으로 보이는게 가장 재밌습니다..)
loss 가 떨어지고 튀는 구간을 눈으로 확인해보기 위해
그래프로 그려서 분석해보겠습니다.
튀는 구간이 과적합이 발생한 구간이겠죠.
그러기 위해서는 일단 loss 값의 묶음(기록)들이 필요합니다.
(어떻게 변화하는지를 그래프에 그려야 하기 때문!)
1. loss 값 기록 가져오기
저희가 계속 사용한
keras 의 Model
fit()함수에
반환값이 있다는걸 아셨나요?
도큐먼트를 확인하면
https://keras.io/api/models/model_training_apis/
Keras documentation: Model training APIs
Model training APIs [source] compile method Model.compile( optimizer="rmsprop", loss=None, loss_weights=None, metrics=None, weighted_metrics=None, run_eagerly=False, steps_per_execution=1, jit_compile="auto", auto_scale_loss=True, ) Configures the model fo
keras.io
loss values 와 metrics values 가 보이네요
이런 값이 담긴 History object를 반환한다고 합니다.
반환 값을 한번 찍어보겠습니다.
history = model.fit(x_train, y_train, epochs=100, batch_size=100, validation_split= 0.3)
print(history.history)
한 에포크 마다의 loss값,
val_loss 값이 담겨있네요!
val_loss가 담긴 이유는
이전 포스팅에서 다룬 validation_splits을 사용했기 때문입니다.
https://aigaeddo.tistory.com/20
16. 데이터쪼개기 2) validation data
지금까지는 모델을 훈련 시킬때 훈련 데이터만 넣어 훈련시켰습니다. 해당 포스팅에서도 이 내용을 다뤘었죠! https://aigaeddo.tistory.com/10 7. 데이터) 데이터 쪼개기 (훈련 데이터, 평가 데이터) 전에
aigaeddo.tistory.com
2. 시각화하기
시각화 하는 방법도
예전에 정리를 했었습니다.
https://aigaeddo.tistory.com/13
10. 모델 훈련 결과 시각화 하기 (feat. matplolib)
이번 포스팅은 모델 훈련 결과를 시각화 해보겠습니다. 데이터를 그래프로 나타낼건데요, matplotlib라는 패키지의 도움을 받아보겠습니다~ 먼저 이 패키지가 무엇인지 알아야 사용을 할 수 있을
aigaeddo.tistory.com
matploblib의 pyplot을 사용하면 되는데요,
history에 담긴 loss들을 선으로 그려주겠습니다.
loss_hist = history.history['loss']
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5)) #그래프 출력 도화지 비율 설정
plt.plot(loss_hist) # 선 그리기
plt.show() #그래프 보여주기
뭔가 밋밋하죠?
이번엔
라인 색, 라인 마커, 레이블과 타이틀도 추가해볼게요.
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5))
plt.plot(loss_hist, color = 'red' , marker = '.') #color : 색, marker : 점찍어줌
plt.title("loss graph") #title
plt.xlabel("epoch") #x 레이블
plt.ylabel("loss") #y 레이블
plt.show()
여기에 val_loss도 비교해보고 싶어서
이것도 추가해보겠습니다.
범례도 같이 추가해볼게요.
loss_hist = history.history['loss']
val_loss_hist = history.history['val_loss']
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5))
plt.plot(loss_hist, color = 'red', label = 'loss', marker = '.') #color : 색, marker : 점찍어줌
plt.plot(val_loss_hist, color = 'blue', label = 'val_loss', marker = '.') #color : 색, marker : 점찍어줌
plt.title("loss graph") #title
plt.xlabel("epoch")
plt.ylabel("loss")
plt.legend(loc='upper right') #우측 상단 범례 표시, (lower, upper,left, right)조합으로 위치 설정
plt.show()
에포크를 1000으로 늘려보면
더이상 loss가 내려가지 않고 튀는 구간이 있네요.
이렇게 시각적으로
과적합 구간을 찾아나갈 수 있습니다.
추가적인 matplotlip 사용법은 요기 잘 정리되어 있으니
참고하세요!
https://codetorial.net/matplotlib/index.html
Matplotlib Tutorial - 파이썬으로 데이터 시각화하기 - Codetorial
이 튜토리얼에서는 Matplotlib의 간단한 사용법을 소개하고, 예제와 함께 다양한 그래프를 그려봅니다. 순서는 아래와 같습니다.
codetorial.net
잘못된 부분이 있다면 지적부탁드립니다!
'인공지능 개발하기 > Machine Learning' 카테고리의 다른 글
[Tensorflow] 19. 이진분류(Binary Classification) (0) | 2024.01.13 |
---|---|
[Tensorflow] 18. keras EarlyStopping() 사용해보기 (2) | 2024.01.13 |
[Tensorflow] 16. 데이터쪼개기 2) validation data (1) | 2024.01.13 |
[Tensorflow] 15. 선형회귀 평가방식(MSE, MAE, RMSE) (1) | 2024.01.13 |
[Tensorflow] 14. 데이콘(Dacon) 연습 대회 참가하기 (2) | 2024.01.09 |