Python/Tensorflow

[Tensorflow] 학습 과정 중 validation loss, accuracy 출력 방법

jimmy_AI 2022. 2. 19. 00:03
반응형

텐서플로우 epoch마다 validation loss, 정확도 표시하기

텐서플로우에서 모델 학습 과정 중 학습 데이터의 loss 및 정확도 뿐 아니라,

검증(테스트) 데이터에 대한 중간 결과를 각 epoch마다 확인할 수 있는 방법에 대해서

간략하게 살펴보도록 하겠습니다.

 

예를 들어, 분류 관련 task에서

x_train, y_train이 학습 데이터 셋과 라벨을 구성하고 있고,

x_valid, y_valid가 검증 데이터 셋과 라벨을 담고 있는 변수라고 가정해보겠습니다.

 

참고 : x_test, y_test같은 테스트 데이터와 라벨을 validation set 대신 사용도 가능합니다.

 

 

Train loss, accuracy만 표시한 경우

모델 학습 과정의 fit 단계에서 validation data를 설정하지 않는다면,

현재 학습 중인 train data에 대해서만 loss와 정확도의 성능 측정을 하게 됩니다.

# validation data 미설정 예시
model.fit(x_train, y_train, epochs=5)

이 경우, train accuracy와 test accuracy가 크게 차이가 나는 과적합이 발생하면,

어느 epoch부터 과적합 현상이 본격적으로 시작되었는지 추적하기가 어렵습니다.

 

 

Validation loss, accuracy를 같이 출력한 경우

만일 각 epoch마다 validation set(혹은 test set)의 중간 결과를 같이 표시하게 된다면,

과적합 현상의 시작 지점 추적이 수월해질 수 있습니다.

 

이는 모델 학습 fit 과정의 validation_data 인자에 검증 데이터를 지정함으로써 가능해집니다.

만일 validation set이 따로 없다면, 해당 인자 내에 test 데이터를 대신 지정해도 괜찮습니다.

# validation data 설정 예시
model.fit(x_train, y_train, epochs=5, validation_data = (x_valid, y_valid))

각 epoch에서 val_loss, val_acc 정보가 같이 출력된 점을 확인할 수 있었으며,

train_loss 및 train_acc와의 비교로 과적합 시작 지점을 추적하기 용이해졌습니다.