validation은 딥러닝을 할때 새로운 데이터로 얼마나 예측하는지 알아보는 방법이다.
코드를 통해 어떻게 쓰이는지 알아보자
데이터는 지난시간까지 블로그를 읽어봤다면 알수 있으니 생략하고 중요한 부분 부터 나간다.
먼저 딥러닝할 모델을 모델링한다.
# 딥러닝 모델링
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
def build_model():
#모델링
model =Sequential()
model.add ( Dense(units=64, activation= 'relu',input_shape=(9,) ) )
model.add ( Dense(units=64, activation= 'relu'))
model.add ( Dense(units=1, activation= 'linear'))
model.compile(optimizer= tf.keras.optimizers.Adam(learning_rate=0.001),loss='mse',metrics=['mse','mae'])
return model
from tensorflow.keras.optimizers import Adam
model = build_model()
데이터를 학습할시 validation_split 파라미터를 추가해 X_train,y_train데이터의 일부를 새로운 데이터로 쓴다.
#X_train,y_train데이터를 나눠서 validation_split 20%로 추가
epoch_history=model.fit(X_train,y_train,epochs = 200,validation_split=0.2)
학습시킨 데이터의 epoch와 validation의 그래프를 한번에 볼수 있게 함수를 만든다.
import matplotlib.pyplot as plt
def plot_history(history) :
hist = pd.DataFrame(history.history)
hist['epoch'] = history.epoch
plt.figure(figsize = (8, 12))
plt.subplot(2, 1, 1)
plt.xlabel('Eopoch')
plt.ylabel('Mean Abs Error [MPG]')
plt.plot(hist['epoch'], hist['mae'], label = 'Train Error')
plt.plot(hist['epoch'], hist['val_mae'], label = 'Val Error')
plt.ylim([0,5])
plt.legend()
plt.subplot(2, 1, 2)
plt.xlabel('Eopoch')
plt.ylabel('Mean Squared Error [MPG]')
plt.plot(hist['epoch'], hist['mse'], label = 'Train Error')
plt.plot(hist['epoch'], hist['val_mse'], label = 'Val Error')
plt.ylim([0,20])
plt.legend()
plt.show()
파란선이 epoch의 history 주황선이 validation의 history이다. 끝에서 둘다 오차가 흔들리지만 서로 잘 맞는걸 알 수 있다.
반응형
'딥러닝' 카테고리의 다른 글
딥러닝(8)에포크, 학습데이터/벨리데이션데이터와 오버피팅 (0) | 2022.12.29 |
---|---|
딥러닝(7) flatten 라이브러리 사용하는 이유, 액티베이션함수 소프트맥스, 분류의 문제에서 loss셋팅 (0) | 2022.12.29 |
딥러닝(5) 텐서플로우로 리그레션 문제 모델링 하는 방법 (0) | 2022.12.28 |
딥러닝(4) GridSearch 를 이용한, 최적의 하이퍼 파라미터 찾기 (0) | 2022.12.27 |
딥러닝(3) dummy variable trap (0) | 2022.12.27 |