개발공부

Validation, validation_split, validation data 코드 예제 본문

Python/Deep Learning

Validation, validation_split, validation data 코드 예제

mscha 2022. 6. 13. 12:18

Validation ?

모델을 학습시킬때 각 Epoch(에포크)가 끝날 때마다 정답을 모르는 새로운 데이터를 주고,

그에 대한 오차는 어떤지에 대한 평가도 같이 진행하는 것을 말한다.

이는 학습을 다 한 후 평가하는 evalueate와는 차이가 있다.

 

Validation 방법
 - train 데이터를 잘라서 사용 validation_split
 - test 데이터를 validation data로 사용
 - validation 용 데이터를 새로 만들어서 valdation data로 사용  ex) X_val, y_val

 

예시

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 = (8, )))
    model.add(Dense(units = 64, activation = 'relu'))
    model.add(Dense(units = 64, activation = 'relu'))
    model.add(Dense(units = 34, activation = 'relu'))
    model.add(Dense(units = 55, activation = 'relu'))
    model.add(Dense(units = 40, activation = 'relu'))
    model.add(Dense(units = 30, activation = 'relu'))
    model.add(Dense(units = 20, activation = 'relu'))
    model.add(Dense(units = 1, activation = 'linear'))

    # 옵티마이저의 learning rate 를 설정하는 방법
    # metrics 검증의 척도, 학습의 에포크가 끝날때마다 출력하게 된다.
    model.compile(tf.keras.optimizers.RMSprop(learning_rate = 0.001), loss = 'mse', metrics = ['mse', 'mae'])
    return model
model = build_model()

 

방법 1. validation_split : train 데이터에서 vaildation 할 때 사용할 데이터의 비율

validation_split  = 0.2  ==> Validation Data를 Train Data의 20 % 로 하겠다.

epoch_history = model.fit(X_train, y_train, epochs = 600, batch_size = 5, 
							validation_split = 0.2)

 

방법 2. validation data 를 test 데이터로 사용하여 validation한다.

epoch_history = model.fit(X_train, y_train, epochs = 10, validation_data = (X_test, y_test))