validation 이란?
: 에포크가 한번 끝날때 마다 학습에 사용하지 않은 데이터로 시험 보는 것을 말한다
** 테스트 = 인공지능이 완전히 학습이 다 끝난 상태에서 평가
** 벨리데이션 = 학습 중에 (에포크 하나가 끝날때마다) 평가
인공지능 학습(fit) 시킬때 파라미터로 넣어서 지정해준다
- validation_split= 사용 _ 학습할때 학습 데이터의 0.n 은 테스트 용으로 쓰겠다고 지정하는 것이다
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
def build_model() :
model = Sequential()
model.add(Dense(64, 'relu', input_shape=(X_train.shape[1],)))
model.add(Dense(64, 'relu'))
model.add(Dense(1, 'linear'))
model.compile(optimizer= tf.keras.optimizers.Adam(learning_rate=0.001), loss='mse', metrics=['mae'])
return model
model = build_model()
# 인공지능 학습할때 학습 데이터의 20% 는 테스트용으로 쓰겠다고 validation_split 으로 지정
epoch_history = model.fit(X_train, y_train, epochs=500, validation_split=0.2)
- 밸리데이션 데이터를 따로 준비한 경우 _ validation_split(준비한데이터 X, 준비한데이터 y)
epoch_history = model.fit( X_train, y_train, epochs=10, validation_data= (X_test, y_test) )
epoch_history 객체에 저장된 통계치를 사용해 모델의 훈련 과정을 시각화하기
- epoch_history 에 있는 키값 중 val_loss(학습테스트 오차)가 적어야 훈련이 잘 된 인공지능이라고 할 수 있다
epoch_history.history.keys()
# dict_keys(['loss', 'mae', 'val_loss', 'val_mae'])
- 시각화 하기 _ 학습데이터 오차와 학습테스트데이터 오차를 같이 확인하여 오버피팅을 찾을 수 있다
import matplotlib.pyplot as plt
plt.plot(epoch_history.history['loss'])
plt.plot(epoch_history.history['val_loss'])
plt.legend(['loss','val_loss'])
plt.savefig('loss.jpg')
plt.show()
'MACHINE | DEEP LEARNING > Deep Learning Project' 카테고리의 다른 글
[AI] 딥러닝 이미지 인식 _ 프래튼 라이브러리(Flatten Library), 소프트맥스(activation= 'softmax') (2) | 2024.04.18 |
---|---|
[AI] 딥러닝 오버피팅 되는 것을 방지하기 위한 EarlyStopping, Callback (0) | 2024.04.17 |
[AI] 딥러닝 epochs history 모델의 훈련 과정 시각화 _차트 (0) | 2024.04.17 |
[AI] 딥러닝 미분 기울기의 이동 보폭 optimizer learning rate 셋팅 (0) | 2024.04.17 |
[AI] 딥러닝 ANN 수치 예측 TensorFlow Regression 문제 모델링 (0) | 2024.04.17 |