Tensorflow - validation_data 설정, validation_split 차이점

Validation_data

  • 많은 데이터를 학습하면 자체적인 정확도는 올라가지만 과대적합인지 확인이 어려움
  • 때문에 인공신경망 학습시 손실률과 정확도를 확인하기 위해 사용
  • 즉, 검증의 용도로 사용

설정 방법

인공신경망 학습시 설정

  • 학습을 위한 인공지능 생성 후 모델링
model = tf.keras.models.Sequential()
model.add( tf.keras.layers.Dense(128, 'relu', input_shape=(784,) ) )
model.add( tf.keras.layers.Dropout(0.2) )
model.add( tf.keras.layers.Dense(10, 'softmax') )
model.compile('adam', 'sparse_categorical_crossentropy', metrics=['accuracy'])

 

  • 인공지능 학습, validation_data 설정
epoch_history = model.fit(X_train, y_train, epochs = 10, validation_data = (X_test, y_test))
>>> Epoch 1/10
1875/1875 [==============================] - 12s 6ms/step
- loss: 0.5303 - accuracy: 0.8125 - val_loss: 0.4335 - val_accuracy: 0.8464
...

validation_data / validation_split 차이

validation_data

  • 각 에포크마다 손실과 모델 측정항목을 평가할 튜플 (x_val, y_val) 혹은 (x_val, y_val, val_sample_weights)
  • 모델은 이 데이터에 대해서는 학습되지 않음
  •  validation_data는 validation_split에 대해 우선순위를 가짐

 

validation_split

  • 0과 1사이 부동소수점으로 표시, 검증 데이터로 사용 할 학습 데이터의 비율
  • 비율만큼의 학습 데이터를 따로 나누어 모델이 학습하지 않도록 함
  • 각 에포크마다 이 데이터에 대한 손실과 모델 측정항목을 평가