개발학습일지

[AI] 딥러닝 인공지능 학습 중에 평가하기 validation 본문

AI/Deep Learning

[AI] 딥러닝 인공지능 학습 중에 평가하기 validation

처카푸 2024. 4. 17. 23:35

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()

plt.plot